>>> 3 > 2 == True
False #say what?
>>> (3 > 2) == True
True
>>> 3 > (2 == True)
True
>>> 3 > 1 == True
True
>>> 3 > False
True
Python在其神秘的隐藏逻辑中做了什么,使得第一条语句False
,而其余的是True
?有人可以向我解释python在这里做什么?
>>> 3 > 2 == True
False #say what?
>>> (3 > 2) == True
True
>>> 3 > (2 == True)
True
>>> 3 > 1 == True
True
>>> 3 > False
True
Python在其神秘的隐藏逻辑中做了什么,使得第一条语句False
,而其余的是True
?有人可以向我解释python在这里做什么?
这是一个连锁的比较(见文档here),同样的方式,
>>> 1 < 2 < 3
True
是
>>> (1 < 2) and (2 < 3)
True
在这种情况下,我们有
>>> 3 > 2 == True
False
因为
>>> (3 > 2) and (2 == True)
False
因为
>>> (3 > 2), (2 == True)
(True, False)
而'1 == True'是真实的,因为'bool'是'int'的一个子类。 –
由于相同的原因,“3> True”也是如此。 –
那么说@DSM。非常感谢。对于python来说,Hooray是为了小小的便利而玩的优先规则。 – Andrew
比较链接不工作的方式,你认为它。看到这里的第三段:http://docs.python.org/3/reference/expressions.html#not-in –
而'1 == True'是True,因为'bool'是'int'的一个子类,''真== 1'和'False == 0'。这也是为什么'3> True'是真的,而'0 False'不是.. –
另外,我不知道你是否犯这个错误,错误的是做类似'if 3> 2 == True:',当他们的意思是'如果3> 2:'。你几乎从不想测试在Python中是否显式地使用== == True。 –