假设将此类型输入到我的python shell中。
>>> print 0 != 1 and (1 == 1 or 2 == 2)
True
返回布尔值True
。现在让我们假设我稍微改了一下。
>>> print 0 != 1 & (1 == 1 | 2 == 2)
False
现在它返回False
。为什么呢?
答案 0 :(得分:8)
我认为你让&
和&&
感到困惑。请注意,在Python中,&&
是关键字and
(据我所知,&&
和||
在Python中不存在。)
|
和&
是二元AND和OR运算符,它们与and
和or
完全不同。
您的第二个代码已翻译为:
0 != 1 & (1 == (1 | 2) == 2) # 1 | 2 is 3
↓↓
0 != 1 & (1 == 3 == 2)
↓↓
0 != 1 & int(False)
↓↓
0 != 1 & 0 # 1 & 0 is 0
现在,0 != 0
为False
。
另请注意关于operator precedence的其他答案。
答案 1 :(得分:3)