Почему "все" и "любой" не реализованы в виде цепочки "и" и "или"?
Мне было интересно, если это обсуждалось - при разработке Python - all
а также any
должны быть реализованы в виде цепочки and
а также or
с соответственно? И каково было основание не делать этого?
Прямо сейчас all
а также any
реализованы эквивалентно:
def all(iterable):
for element in iterable:
if not element:
return False
return True
def any(iterable):
for element in iterable:
if element:
return True
return False
Мне было интересно, почему это не реализовано, как:
def all(iterable): # alternative idea
result = True
for element in iterable:
if not element:
return element
else:
result = element
return result
def any(iterable): # alternative idea
result = False
for element in iterable:
if element:
return element
else:
result = element
return result
Это будет означать, что если вы кормите all
что-то вроде all([a,b,c,d,e])
это эквивалентно:
(True and) a and b and c and d and e
и если вы кормите тот же список any([a,b,c,d,e])
результат будет равен:
(False or) a or b or c or d or e
я размещен (True and
) а также (False or)
между скобками, потому что это "неявные" элементы в цепочке.