提问人:nobody 提问时间:9/20/2011 最后编辑:user2357112nobody 更新时间:3/29/2023 访问量:2403
Python 运算符的优先级 in 和 comparison
python operator precedence of in and comparison
问:
以下比较产生:True
>>> '1' in '11'
True
>>> ('1' in '11') == True
True
反过来,使用括号,我得到一个 TypeError:
>>> '1' in ('11' == True)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: argument of type 'bool' is not iterable
那么我如何获得没有括号呢?False
>>> '1' in '11' == True
False
答:
23赞
Amber
9/20/2011
#1
Python 手册说 并且具有同等的优先级。因此,默认情况下,它们是从左到右计算的,但也需要考虑链接。您在上面放置的表达式 () 实际上被评估为......in
==
'1' in '11' == True
('1' in '11') and ('11' == True)
这当然是.如果你不知道什么是链接,它允许你做一些事情,比如......False
if 0 < a < 1:
在 Python 中,并使其表示您所期望的(“a 大于 0 但小于 1”)。
9赞
Ignacio Vazquez-Abrams
9/20/2011
#2
它与优先级无关。在 Python 中,关系运算符 chain,并且 containment 被视为关系运算符。因此:
'1' in '11' == True
等同于:
('1' in '11') and ('11' == True)
这是错误的,因为它不等于“11”。True
2赞
Roshan Mathews
9/20/2011
#3
链接允许你写 ,和 mean .看看这个互动:x < y < z
x < y and y < z
>>> (False == True) == False
True
>>> False == (True == False)
True
>>> False == True == False
False
>>>
所以在你的示例中,相当于'1' in '11' == True
('1' in '11') and ('11' == True)
评论