为什么(1 == 2 != 3)
评估,以False
在Python,而这两个((1 == 2) != 3)
和(1 == (2 != 3))
评估来True
?
这里使用什么运算符优先级?
这是由于运营商chaining phenomenon
。Pydoc将其解释为:
比较可以任意链接,例如,x <y <= z等于x <y和y <= z,除了y仅被评估一次(但是在两种情况下,当x <y被发现时,z都不被评估。是假的)。
如果你看一下优先的的==
和!=
运营商,你会发现,它们具有相同的优先级,因此适用于链接现象。
所以基本上会发生什么:
>>> 1==2
=> False
>>> 2!=3
=> True
>>> (1==2) and (2!=3)
# False and True
=> False
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句