python 中的任何内容不打印内容
any in python doesn't print content
我正在玩 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
问题在行
if any(lambda x: x() for x in [g, f, f]):
any 函数将 return True 并且它只会打印 3 ,就像它应该的那样,因为你正在 returning 一些 lambda 对象但你没有调用它们。
所以如果你想表现得像你预期的那样,你应该试试这个:
if any(x() for x in [g, f, f]):
我正在玩 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
问题在行
if any(lambda x: x() for x in [g, f, f]):
any 函数将 return True 并且它只会打印 3 ,就像它应该的那样,因为你正在 returning 一些 lambda 对象但你没有调用它们。
所以如果你想表现得像你预期的那样,你应该试试这个:
if any(x() for x in [g, f, f]):