2014-01-08 71 views
5
>>> 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在这里做什么?

+0

比较链接不工作的方式,你认为它。看到这里的第三段:http://docs.python.org/3/reference/expressions.html#not-in –

+2

而'1 == True'是True,因为'bool'是'int'的一个子类,''真== 1'和'False == 0'。这也是为什么'3> True'是真的,而'0 False'不是.. –

+1

另外,我不知道你是否犯这个错误,错误的是做类似'if 3> 2 == True:',当他们的意思是'如果3> 2:'。你几乎从不想测试在Python中是否显式地使用== == True。 –

回答

13

这是一个连锁的比较(见文档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) 
+2

而'1 == True'是真实的,因为'bool'是'int'的一个子类。 –

+0

由于相同的原因,“3> True”也是如此。 –

+0

那么说@DSM。非常感谢。对于python来说,Hooray是为了小小的便利而玩的优先规则。 – Andrew

相关问题