2024-09-28 01:26:12 发布
网友
我在代码中遇到了一个奇怪的错误,原因是我在条件关键字中使用了逗号,而不是and关键字。请参见下面的代码,以获取淡化的示例:
and
def foo(): s = set([1, 2, 3]) a = 4 b = 5 if (a, b in s): # Should have been: if (a and b in s): print "Foo" foo() # prints "Foo"
为什么条件的计算结果是True?即使a是None,“Foo”也会被打印出来。你知道吗
True
a
None
表达式(a, b in s)是有效的Python元组。只要它至少有一个元素,它就会评估为真理,而不管它的内容是什么。(这个有两个)。你知道吗
(a, b in s)
这是因为(a, b in s)的计算结果是长度为2的元组(4, False),而在python中,如果元组的长度不为零,则认为它是True。你知道吗
(4, False)
不管a的值和b是否在s中,代码都打印“Foo”的原因是:
实际上是一个元组。if语句检查元组是否存在,并打印Foo。 什么时候
s=set([1,2,3]) a=None b=5
检查的条件为
if(None, False):
这总是正确的,因为
(None, False) #is a non empty tuple.
表达式
(a, b in s)
是有效的Python元组。只要它至少有一个元素,它就会评估为真理,而不管它的内容是什么。(这个有两个)。你知道吗这是因为
(a, b in s)
的计算结果是长度为2的元组(4, False)
,而在python中,如果元组的长度不为零,则认为它是True
。你知道吗不管a的值和b是否在s中,代码都打印“Foo”的原因是:
(a, b in s)
实际上是一个元组。if语句检查元组是否存在,并打印Foo。 什么时候
检查的条件为
这总是正确的,因为
相关问题 更多 >
编程相关推荐