我正在玩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] 删除。
我来说两句