Agu*_*guy 21 python python-3.x
这令我感到困惑.即使不知道优先顺序,也可以检查收集表达式的两种可能方法是False:
>>> (0 is 0) == 0
False
>>> 0 is (0 == 0)
False
Run Code Online (Sandbox Code Playgroud)
但
>>> 0 is 0 == 0
True
Run Code Online (Sandbox Code Playgroud)
怎么会?
Mar*_*ers 19
您正在使用比较运算符链接.表达式被解释为:
(0 is 0) and (0 == 0)
Run Code Online (Sandbox Code Playgroud)
从比较文档:
比较可以任意链接,例如,
x < y <= z等同于x < y and y <= z,除了y仅评估一次(但在两种情况下z都没有被评估,当x < y发现是假的时).
0 is 0是真的,因为Python实习小整数,一个实现细节,所以你得到了(True) and (True)生产True.
在Python中链接比较运算符时,运算符实际上并不应用于其他运算符的结果,而是单独应用于操作数.这就是x ? y ?? z(其中?,并??都应该站在对一些比较操作)既不等同于(x ? y) ?? z也不是x ? (y ?? z),而是x ? y and y ?? z.
这对于>和co.来说特别有用,它允许你编写类似的东西min < x < max并让它做你想做的事情,而不是将布尔值与数字进行比较(这在大多数其他语言中会发生).
| 归档时间: |
|
| 查看次数: |
1887 次 |
| 最近记录: |