18 & True,结果是0
18 and True,结果是True
在Python中,and 和 & 都是逻辑运算符,但它们在用法和含义上有一些重要的区别。
and:逻辑与。
当且仅当所有条件都为真时,结果才为真。
&:按位与。
这个操作是对两个数字的每一位进行比较,只有当两个相应的位都为1时,结果位才为1。
当你要比较的是逻辑值(例如两个布尔值或可以转化为布尔值的对象)时,应该使用 and。
当你要比较的是数字的二进制位时,应该使用 &。
举例说明:
pythona = True and False # 结果是 False,因为有一个条件是 False b = 5 and 10 # 结果是 10,因为有一个条件是 10
c = 5 & 3 结果是 1,
因为 5 的二进制表示是 101,3 的二进制表示是 011,
只有最低位的 1 和 1 是相同的,所以结果是 1
当你不小心将 and 和 & 混用时,可能会得到意外的结果。例如,如果你想检查两个数是否都大于0,应该使用 and:x > 0 and y > 0。如果你误用了 &,那么得到的结果可能与你的预期不符。