python中的任何不打印内容

wuyudi

我正在玩any,发现了这个:

def f():
    print(1)
    return True


def g():
    print(2)
    return False


if any(lambda x: x() for x in [g, f, f]):
    print(3)

我想我会得到

2
3

2
1
3

但只能得到

3

我不知道为什么。

温德雷亚

lambda 从来没有真正被调用过,所以它本身被评估,并且函数对象显然是真实的。

>>> bool(lambda: False)
True
>>> bool(max)
True
>>> bool(f)
True

只需删除 lambda 部分:

if any(x() for x in [g, f, f]):
    print(3)

输出:

2
1
3

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章