python 运算符的优先级和比较
- 2025-01-10 08:47:00
- admin 原创
- 93
问题描述:
经过以下比较可得出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
解决方案 1:
Python 手册中说in
和==
具有同等优先级。因此,默认情况下它们从左到右进行求值,但也需要考虑链接。你在上面输入的表达式 ( '1' in '11' == True
)实际上被求值为...
('1' in '11') and ('11' == True)
当然是False
。如果你不知道什么是链式操作,它允许你做类似的事情...
if 0 < a < 1:
在 Python 中,并使其含义符合您的预期(“a 大于 0 但小于 1”)。
解决方案 2:
它与优先级无关。在 Python 关系运算符链中,包含被视为关系运算符。因此:
'1' in '11' == True
与以下相同:
('1' in '11') and ('11' == True)
这是错误的,因为True
它不等于“11”。
解决方案 3:
链接允许你编写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)
相关推荐
热门文章
项目管理软件有哪些?
热门标签
云禅道AD