最近在学习时常常把Python的and
和&
搞混淆,特地来记录一下。
对于a & b
和a and b
,有以下两种情况:
若a、b为数值变量
&
表示位运算,含义为“与”——只有当两个位都为1时,结果才为1。and
的规则是若a、b两个数中含0,则返回0;若a、b两个数均为非0时,则返回后一个值。
此外,当and
遇到bool
逻辑为False
的值,则会立刻返回该值且不再往后运算。
>>> 1 & 2
0
>>> 3 & 5
1
>>> 1 and 2
2
>>> 1 and 2 and 3
3
>>> 0 and 1
0
>>> 1 and '' and {} and () and False
''
对 3&5=1 的解释:3&5 即 0000 0011 & 0000 0101 = 0000 0001,因此 3&5 的值得 1。
若a、b为逻辑变量
这里需要养成使用()
的好习惯。通常情况下,逻辑运算符和比较运算符一起使用,用于条件选择和循环。
>>> a = 1
>>> b = 1
>>> a > 0 and b > 0
True
>>> (a > 0) and (b > 0) # 这种写法更好,不容易出错
True
参考:
https://www.runoob.com/w3cnote/bit-operation.html
https://www.cnblogs.com/huangbiquan/p/7892872.html
www.yingshi.tv