Python 位运算 & >>

 &  二进制对位 相同返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

你可能感兴趣的:(Python算法,python)