Syl*_*ell 6 python evaluation short-circuiting
我希望使用Python all()函数来帮助我计算某些东西,但是如果all()它没有在它命中时就进行评估,那么这个东西可能会花费更长的时间False.我想它可能是短路评估,但我只是想确定.另外,有没有办法告诉Python如何评估函数?
Ter*_*ryA 14
是的,它短路:
>>> def test():
... yield True
... print('one')
... yield False
... print('two')
... yield True
... print('three')
...
>>> all(test())
one
False
Run Code Online (Sandbox Code Playgroud)
如果iterable的所有元素都为true(或者iterable为空),则返回True.相当于:
def all(iterable):
for element in iterable:
if not element:
return False
return True
Run Code Online (Sandbox Code Playgroud)
因此当它为return假时,则该函数立即中断.
是的,all确实使用短路评估。例如:
all(1.0/x < 0.5 for x in [4, 8, 1, 0])
=> False
Run Code Online (Sandbox Code Playgroud)
x当到达1列表时,当条件变为假时,上面的操作停止。如果all没有短路,当x达到时我们会除以零0。
| 归档时间: |
|
| 查看次数: |
1687 次 |
| 最近记录: |