有人能给我解释一下python在这里做什么吗?
Python在其被遗忘的隐藏逻辑中做了什么,使得第一条语句有人能给我解释一下python在这里做什么吗?,python,Python,Python在其被遗忘的隐藏逻辑中做了什么,使得第一条语句为False,而其余语句为True?这是一个链式比较(见文档中),与 >>> 3 > 2 == True False #say what? >>> (3 > 2) == True True >>> 3 > (2 == True) True >>> 3 > 1 == True True >>> 3 > False
为False
,而其余语句为True?这是一个链式比较(见文档中),与
>>> 3 > 2 == True
False #say what?
>>> (3 > 2) == True
True
>>> 3 > (2 == True)
True
>>> 3 > 1 == True
True
>>> 3 > False
True
因为
>>> 3 > 2 == True
False
>>> (3 > 2) and (2 == True)
False
因为
>>> 3 > 2 == True
False
>>> (3 > 2) and (2 == True)
False
比较链接并不像你想象的那样有效。参见此处第三段:
1==True
为True,因为bool
是int
和True==1
和False==0
的子类。这也是为什么3>True
是真的,而0
是真的,但是0>False
不是真的。另外,我不知道你是否犯了这个错误,但一个常见的错误是做了类似于if 3>2==True:
的事情,当它们的意思是if 3>2:
。在python中,您几乎不想测试某个东西是否显式地==True
。@Neftas:No,只有0==False
是真的。每隔一个数字不等于False
。这是一次讲座,我解释了不同的比较运算符。我的意思是第二行(3>2)==True,只是为了告诉他们可以做什么。而1==True
是True,因为bool
是int
的一个子类。而3>True
也是True,原因相同。说得好@DSM。多谢。为了一点小小的方便,python快速而宽松地使用优先规则,万岁@安德鲁:很高兴能帮忙。但是,恕我直言,如果您以前没有看到过这一点,那么您还没有在实际程序中充分使用Python来决定这种便利是否值得。我觉得是这样的。
>>> (3 > 2), (2 == True)
(True, False)