这是如何处理的?

2024-09-28 01:26:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我在代码中遇到了一个奇怪的错误,原因是我在条件关键字中使用了逗号,而不是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?即使aNone,“Foo”也会被打印出来。你知道吗


Tags: and代码in示例iffoodef错误
3条回答

表达式(a, b in s)是有效的Python元组。只要它至少有一个元素,它就会评估为真理,而不管它的内容是什么。(这个有两个)。你知道吗

这是因为(a, b in s)的计算结果是长度为2的元组(4, False),而在python中,如果元组的长度不为零,则认为它是True。你知道吗

不管a的值和b是否在s中,代码都打印“Foo”的原因是:

(a, b in s)

实际上是一个元组。if语句检查元组是否存在,并打印Foo。 什么时候

s=set([1,2,3])
a=None
b=5

检查的条件为

if(None, False):

这总是正确的,因为

(None, False) #is a non empty tuple.

相关问题 更多 >

    热门问题