您可以使用内置
any函数将 没有return语句 的函数应用于生成器返回的任何项,而无需创建列表。可以这样实现:
any(installWow(x, 'installed by me') for x in wowList)
我发现这是您想要实现的最简洁的领域。
在内部,该
installWow函数确实返回
None,其
False逻辑运算结果为。
any基本上
or是对生成器返回的所有项目应用归约运算,这
None当然是全部,因此必须迭代生成器返回的所有项目。最后,它确实返回了
False,但这并不需要打扰您。好处是:不会将任何列表创建为副作用。
请注意,这仅在您的函数返回计算结果为
False,例如
None或0的情况下有效。如果它确实返回
True在某点计算的结果,例如,
1则不会将其应用于迭代器中的任何其他元素。为了安全起见,将此惯用法主要用于没有return语句的函数。



