all()和any()总是按顺序短路吗?

时间:2017-01-06 15:01:04

标签: python

根据https://stackoverflow.com/a/17246413/2687324all()any()短路。评估顺序是否得到保证?

使用链接答案中的示例:

>>> def test():
...     yield True
...     print('one')
...     yield False
...     print('two')
...     yield True
...     print('three')
...
>>> all(test())
one
False

结果总是oneFalse

1 个答案:

答案 0 :(得分:4)

根据python documentation

  

所有(迭代)

     

如果iterable的所有元素都为true(或者iterable为空),则返回True。相当于:

def all(iterable):
    for element in iterable:
        if not element:
            return False
    return True

正如评论中所说的那样,答案是肯定的,如果你的迭代的顺序是稳定的。