Меня беспокоит то, что итераторы python не подпадают под определение чистого неизменяемого объекта, поскольку повторный доступ к ним изменяет их поведение. Я понимаю, как это работает, но чтение кода с итераторами может сбивать с толку и не очень похоже на pythoni c.
Мой вопрос ... есть ли хороший способ pythoni c подойти к этому?
Т.е. использование итератора здесь приводит к побочному эффекту (входной аргумент изменяется) делает функцию нечистой.
def foo(i):
return list(i)
b = iter([1,2,3])
print(foo(b)) # outputs [1,2,3]
print(foo(b)) # outputs []
print(list(b)) # outputs []