Рассмотрим следующий код Python:
def f(*args):
for a in args:
pass
foo = ['foo', 'bar', 'baz']
# Python generator expressions FTW
gen = (f for f in foo)
f(*gen)
*args
автоматически ли расширяет генератор во время вызова? Иными словами, я повторяю по gen
дважды в пределах f(*gen)
, один раз, чтобы развернуть *args
, и один раз, чтобы перебрать аргументы? Или генератор сохраняется в первоначальном состоянии, в то время как итерация происходит только один раз в течение цикла for?