& 二进制对位 相同返1,否则返0
场景:路由权限
1 0b1 查
2 0b10 增
4 0b100 改
8 0b1000 删
用户 0 黑名单,权限全无
用户 5 0b101 有查,改权限,无添加,删除
用户 7 0b111 有查,增,改权限, 无删除
user = 7
dic = {'GET': 0b1, 'POST': 0b10, 'PUT': 0b100, 'DELETE': 0b1000}
def my_auth(func):
def wrapper(*args):
if user & dic[args[0]]:
func(*args)
else:
print(f"{args[0]}没权限")
return wrapper
@my_auth
def view(name):
print(f'{name}进入视图')
pass
view("GET")
view("POST")
view("PUT")
view("DELETE")
打印结果 GET进入视图 POST进入视图 PUT进入视图 DELETE没权限
场景:求奇偶数
偶数&1 得0 奇数&1 得1
2 & 1 0
3 & 1 1
4 & 1 0
5 & 1 1
位移 向右位移 >> 向左位移<<
>>1场景:折半查找
3 >> 1 位移性能高于整除 3 // 2
3 >> 1 3位移一位,相当于3整除2一次,位移2位相当于整除2两次
print(200>>3) # 200 整除2 整除2 再整除2 结果为25
print(200<<3) # 200 乘以2 乘以2 再乘以2 结果为1600