需求:
利用装饰器的高级用法,实现输入用户需求值user_permission,即打印该用户拥有哪些权限[读,写,执行,删除]
提示:运用按位与运算[&]实现
# 按位与,同为1则为1,有1的位置即代表有该权限
user_permission = 11 # 变量 1011
DEL_PERMISSION = 8 # 1011 & 1000 ==> 1000
READ_PERMISSION = 4 # 1011 & 0100 ==> 0000
WRITE_PERMISSION = 2 # 1011 & 0010 ==> 0010
EXECUTE_PERMISSION = 1 # 1011 & 0001 ==> 0001
def permission_test(x,y):
def inner(fn):
def inner_2():
if x & y != 0: # 有权限,可以执行
fn()
else:
print('没有相应的权限')
return inner_2
return inner
@permission_test(user_permission,DEL_PERMISSION)
def read():
print('我有读的权限')
@permission_test(user_permission,READ_PERMISSION)
def write():
print('我有写的权限')
@permission_test(user_permission,WRITE_PERMISSION)
def execute():
print('我有执行的权限')
@permission_test(user_permission,EXECUTE_PERMISSION)
def delete():
print('我有删除的权限')
delete()
read()
write()
execute()