11、pass,is,位运算的补充

pass的补充

  一般Python的代码是基于缩进来实现,Python中规定代码块中必须要有代码才算完整,在没有代码的情况下为了保证语法的完整性可以用pass代替

if 条件:
    pass
else:
    pass

for i in range(10):
    pass

 

is比较

  • ==,用于比较两个值是否相等
  • is,用于表示内存地址是否一致
v1 = []
v2 = []
print(v1 == v2)   #True,两个值相同
print(v1 is v2)    #Flase,不属于同一块内存
v1 = []
v2 = v1
print(v1 == v2)   #True,两个值相同
print(v1 is v2)    #True,属于同一块内存
v1 = None
v2 = None
print(v1 == v2)   #True,两个值相同
print(v1 is v2)    #True,属于同一块内存

 

位运算

  计算机底层本质都是二进制,我们平时在计算机中做的很多操作底层都会转换为二进制的操作,位运算就是对二进制的操作

  • &,与(都为1)
a = 60  #60 = 0011 1100
b = 13  #13 = 0000 1101
c = a & b
print(c) #12 = 0000 1100
  • |,或(只要有一个为1)
a = 60  #60 = 0011 1100
b = 13  #13 = 0000 1101
c = a | b

print(c)    #61 = 0011 1101
  • ^,异或(值不同)
a = 60  #60 = 0011 1100
b = 13  #13 = 0000 1101
c = a ^ b

print(c)    #49 = 0011 0001
  • ~,取反
a = 60  #60 = 0011 1100
c = ~a

print(c)    #-61 = 1100 0011
  • <<,左移动
a = 60  #60 = 0011 1100
c = a << 2

print(c)    #240 = 1111 0000
  • >>,右移动
a = 60  #60 = 0011 1100
c = a >> 2

print(c)    #15 = 0000 1111

  平时开发中,二进制的位运算很少用到,在计算机底层或网络传输协议底层用的比较多

  • 计算 2**n
print(2**0) #1 << 0    1    1
print(2**1) #1 << 1    10    2
print(2**2) #1 << 2    100    4
print(2**3) #1 << 3    1000    8
  • 计算一个数的一半
a = 10    #10 = 0000 1010
print(a >> 1)    #5 = 0000 0101

a = 20    #10 = 0000 1010
print(a >> 1)    #10 = 0001 0100

 

posted @ 2021-03-11 15:13  tonitaka  阅读(158)  评论(0)    收藏  举报