以下比较产生True
:
>>> '1' in '11'
True
>>> ('1' in '11') == True
True
Run Code Online (Sandbox Code Playgroud)
另一方面,使用括号,我得到一个TypeError:
>>> '1' in ('11' == True)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: argument of type 'bool' is not iterable
Run Code Online (Sandbox Code Playgroud)
那么我怎么False
没有括号?
>>> '1' in '11' == True
False
Run Code Online (Sandbox Code Playgroud)
Amb*_*ber 12
Python手册说in
并且==
优先级相同:
http://docs.python.org/reference/expressions.html#summary
因此,它们默认情况下从左到右进行评估,但也有链接要考虑.您放在上面的表达式('1' in '11' == True
)实际上被评估为......
('1' in '11') and ('11' == True)
Run Code Online (Sandbox Code Playgroud)
当然是False
.如果你不知道链接是什么,它是什么允许你做一些像......
if 0 < a < 1:
Run Code Online (Sandbox Code Playgroud)
在Python中,这意味着你所期望的("a大于0但小于1").
它与优先级无关。在Python中,关系运算符链和包含被视为关系运算符。因此:
'1' in '11' == True
Run Code Online (Sandbox Code Playgroud)
是相同的:
('1' in '11') and ('11' == True)
Run Code Online (Sandbox Code Playgroud)
这是错误的,因为True
1和1不等于“ 11”。