Düşünmek:
>>> lst = iter([1,2,3])
>>> next(lst)
1
>>> next(lst)
2
Dolayısıyla, yineleyicinin ilerletilmesi, beklendiği gibi, aynı nesneyi değiştirerek ele alınır.
Bu durumda, ben beklenir:
a = iter(list(range(10)))
for i in a:
print(i)
next(a)
her ikinci öğeyi atlamak için: çağrıyı next
yineleyiciyi bir kez ilerletmeli, sonra döngü tarafından yapılan örtülü çağrı onu ikinci kez ilerletmelidir - ve bu ikinci çağrının sonucu atanır i
.
Öyle değil. Döngü , listedeki tüm öğeleri, hiçbirini atlamadan yazdırır .
İlk düşüncem bunun olabileceğiydi, çünkü döngü geçileni çağırıyor iter
ve bu bağımsız bir yineleyici verebilir - bizim durumumuz böyle değil iter(a) is a
.
Peki, neden next
bu durumda yineleyiciyi ilerletmiyor?