奇数运算符优先级/关联行为

NPE*_*NPE 2 python operator-precedence python-2.7

在Python 2.7中,如何做到以下几点

True == 'w' in 'what!?'
Run Code Online (Sandbox Code Playgroud)

表现不同于两者

(True == 'w') in 'what!?'
Run Code Online (Sandbox Code Playgroud)

True == ('w' in 'what!?')
Run Code Online (Sandbox Code Playgroud)

>>> True == 'w' in 'what!?'
False

>>> (True == 'w') in 'what!?'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'in <string>' requires string as left operand, not bool

>>> True == ('w' in 'what!?')
True
Run Code Online (Sandbox Code Playgroud)

Kev*_*vin 6

在Python中,比较可以链接在一起:

比较可以任意链接,例如,x <y <= z等于x <y和y <= z,除了y仅被评估一次(但在两种情况下,当x <y被发现时,根本不评估z是假的).

所以你的代码实际上相当于

>>> (True == 'w') and ('w' in 'what!?')
False
Run Code Online (Sandbox Code Playgroud)