如何在Python 2.7中使用以下内容
True == 'w' in 'what!?'
的行为与两者不同
(True == 'w') in 'what!?'
和
True == ('w' in 'what!?')
>>> 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
答案 0 :(得分:6)
在Python中,比较可以是chained together:
比较可以任意链接,例如,x <1。 y&lt; = z等于x&lt; y和y&lt; = z,除了y仅被评估一次(但在两种情况下,当x&lt; y被发现为假时,根本不评估z。)
所以你的代码实际上等同于
>>> (True == 'w') and ('w' in 'what!?')
False
答案 1 :(得分:2)
我们来看看:
>>> import ast
>>> ast.dump(ast.parse("""True == 'w' in 'what!?'""", mode='eval'))
"Expression(body=Compare(left=Name(id='True', ctx=Load()), ops=[Eq(), In()],
comparators=[Str(s='w'), Str(s='what!?')]))"
比较可以任意链接,例如,
x < y <= z
等同于x < y and y <= z
,但y
只评估一次[...]