Ответ 1
Если вы опустите третий параметр, в качестве инициализатора используется первое значение из tup
.
Или, говоря иначе, reduce()
помещает необязательный третий параметр перед значениями второго аргумента, если он присутствует.
Кроме того, это означает, что если второй аргумент является пустой последовательностью, этот третий аргумент служит по умолчанию, так же как второй аргумент с одним только элементом (и без явного аргумента инициализации), будет значением возвращаемого по умолчанию.
Документация functools.reduce()
включает в себя версию функции Python:
def reduce(function, iterable, initializer=None):
it = iter(iterable)
if initializer is None:
value = next(it)
else:
value = initializer
for element in it:
value = function(value, element)
return value
Обратите внимание, что вместо iterable
в качестве первого значения вместо iterable
используется initializer
, а не None
.