Sam*_*ley 29 python python-3.x
为什么在使用括号时这些语句按预期工作:
>>> (True is False) == False
True
>>> True is (False == False)
True
Run Code Online (Sandbox Code Playgroud)
但是False当没有括号时它会返回?
>>> True is False == False
False
Run Code Online (Sandbox Code Playgroud)
Kas*_*mvd 16
基于有关运算符优先级的python 文档:
请注意,比较,成员资格测试和身份测试都具有相同的优先级,并具有从"比较"部分中所述的从左到右的链接功能.
所以实际上你有一个链式声明如下:
>>> (True is False) and (False==False)
False
Run Code Online (Sandbox Code Playgroud)
您可以假设中心对象将在2个操作和其他对象之间共享(在本例中为False).
请注意,对于所有比较,它也适用,包括跟随操作数的成员资格测试和身份测试操作:
in, not in, is, is not, <, <=, >, >=, !=, ==
Run Code Online (Sandbox Code Playgroud)
示例:
>>> 1 in [1,2] == True
False
Run Code Online (Sandbox Code Playgroud)
Sil*_*olo 10
Python在比较运算符方面具有独特的传递属性.在更简单的情况下更容易看到.
if 1 < x < 2:
# Do something
Run Code Online (Sandbox Code Playgroud)
这样做看起来像.它会检查1 <x和x <2.在非括号内的代码中会发生同样的事情.
>>> True is False == False
False
Run Code Online (Sandbox Code Playgroud)
它检查True是否为假而 False == False,其中只有一个为真.
这是一个双重不等式,它被扩展为(True is False) and (False == False).请参阅例如在Python中编写双重不等式时的运算符优先级是什么(显式在代码中,如何为数组重写?)
| 归档时间: |
|
| 查看次数: |
2705 次 |
| 最近记录: |