Задача, которую вы пытаетесь выполнить, может быть решена путем создания класса. (Или вы можете посмотреть на создание объекта «генератора», который является отдельной вещью.)
Что вам нужно для того, чтобы сохранить значение n от одного обращения к следующему, - это своего рода глобальная переменная,Глобальные переменные в Python возможны, но это плохая практика. То же самое можно сделать из класса, где n хранится и инкапсулируется в этом классе.
Посмотрите на сделанные мной изменения и посмотрите, работает ли теперь функция, как вы предполагали. Ура!
class fibonacci_closure():
def __init__(self):
self.n = 0
def fibonaci(self):
if self.n == 0:
self.n+=1
print(0)
elif self.n == 1 or self.n == 2:
self.n+=1
print(1)
else:
i = 1
j = 1
tmp = 1
hold = self.n
while hold != 2:
hold -=1
tmp = i
i = j + i
j = tmp
self.n+=1
print(i)