a = 10
b = 20
c = 30
if(a > b,c):
print('In if')
else:
print('In else')
有人发布了上面的代码,并问为什么上面总是导致'In if',无论b和c的值如何都被打印出来。
虽然这看起来像是糟糕的编程风格,但我很好奇,
操作员在做什么。
到目前为止,我无法在文档中找到答案。任何人都可以提供解释吗?
a = 10
b = 20
c = 30
if(a > b,c):
print('In if')
else:
print('In else')
有人发布了上面的代码,并问为什么上面总是导致'In if',无论b和c的值如何都被打印出来。
虽然这看起来像是糟糕的编程风格,但我很好奇,
操作员在做什么。
到目前为止,我无法在文档中找到答案。任何人都可以提供解释吗?
a > b, c
是元组((a > b), c)
。
所以如果a=10, b=20, c=30
, 那么我们在询问元组(False, 30)
是否为truish。所有非空元组都是真实的,所以这总是会触发通过条件的相同路径。
例子:
>>> 5>4,5
(True, 5)
它输出一个元组,其中元素 the result of 5>4
和5
因为 5>4 等于True
输出将是(True, 5)
让我首先解释元组的结果:
在你的情况下,因为a>b
是假的,元组的第一部分是False
.
所以(a>b,c)
, 看起来像(False, 30)
.
现在你在问一个元组是否有一些内容。是的,它当然是有内容的,就是这样(False, 30)
。
这就是为什么您的if
支票总是通过而不管a,b,c
.
如果将一个空元组传递给if clause
,那么您将看到if clause
失败,如下所示。
>>> if():
print('In if')
else:
print('In else')
In else
问候