Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有人能给我解释一下python在这里做什么吗?_Python - Fatal编程技术网

有人能给我解释一下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

Python在其被遗忘的隐藏逻辑中做了什么,使得第一条语句
为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)