Menggunakan penjana untuk mengulang data membina masalah yang hilang, dan kod yang sama berjalan dengan hasil yang tidak konsisten:
Hasil berjalan dalam mod fail ialah: 5 2 1 0
Python disertakan dengan IDLE dan hasilnya ialah: 5 3 2 1 0
def countdown(n):
while n >= 0:
newvalue = (yield n)
if newvalue is not None:
n = newvalue
else:
n -= 1
c = countdown(5)
for n in c:
print(n)
if n == 5:
c.send(3)
Jangan ubah suai objek yang dilalui, kerana ini akan menyebabkan kekeliruan indeks dan gagal mencapai hasil yang kita inginkan Anda boleh menggunakan enumerate untuk melihat perubahan dalam indeks semasa proses traversal