gpt4 book ai didi

python bool 表达式不是 "short-circuit"?

转载 作者:太空狗 更新时间:2023-10-29 18:17:30 26 4
gpt4 key购买 nike

例如:

def foo():
print 'foo'
return 1
if any([f() for f in [foo]*3]):
print 'bar'

我认为上面的代码应该输出:

foo
bar

代替:

foo
foo
foo
bar

为什么?我怎样才能产生“短路”效应?

最佳答案

解构您的程序以查看发生了什么:

>>> [f() for f in [foo]*3]
foo
foo
foo
[1, 1, 1]
>>>

您已经创建了一个列表并传递给 any 并打印了 3 次。

>>> any ([1, 1, 1])
True

这被提供给 if 语句:

>>> if any([1, 1, 1]):
... print 'bar'
...
bar
>>>

解决方案:将生成器传递给任何

>>> (f() for f in [foo]*3)
<generator object <genexpr> at 0x10041a9b0>

关于python bool 表达式不是 "short-circuit"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4301921/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com