Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana Python Iterator Berfungsi: Panduan kepada Kaedah `__iter__` dan `__next__`?
Cara Python Iterators Berfungsi: Panduan Komprehensif
Iterators ialah elemen penting dalam pengaturcaraan Python, membolehkan traversal jujukan atau penjanaan yang cekap dan ringkas nilai dengan pantas. Artikel ini meneroka cara mencipta iterator asas dalam Python, memfokuskan pada konsep asas dan pelaksanaan.
Memahami Protokol Iterator
Iterators Python mengikut protokol tertentu, ditakrifkan dengan kaedah __iter__() dan __next__(). Kaedah __iter__() mengembalikan objek iterator, yang berfungsi sebagai titik masuk untuk lelaran. Sebaliknya, kaedah __next__() mengembalikan nilai seterusnya dalam jujukan atau menimbulkan pengecualian StopIteration apabila tiada lagi nilai.
Mencipta Iterator Tersuai
Pertimbangkan kelas Contoh berikut yang secara logiknya "mengandungi" nilai:
class Example: def __init__(self, values): self.values = values
Kepada melaksanakan iterator untuk kelas ini, kami mentakrifkan kaedah __iter__() dan __next__():
class Example: def __init__(self, values): self.values = values def __iter__(self): return self def __next__(self): if self.values: return self.values.pop(0) else: raise StopIteration
Dalam contoh ini, iterator mengembalikan nilai daripada senarai nilai dengan memaparkannya satu demi satu. Apabila senarai kosong, ia menimbulkan pengecualian StopIteration.
Menggunakan Iterator
Sekarang, kita boleh menggunakan iterator seperti berikut:
e = Example([1, 2, 3]) for value in e: print("The example object contains", value)
Kod ini akan berulang ke atas nilai [1, 2, 3] dan mencetak setiap nilai ke konsol.
Pelajar Lebih Kompleks
Pelajar tidak terhad kepada mengakses atribut atau nilai tertentu bagi sesuatu tika. Mereka juga boleh mengawal dari mana nilai datang atau mengiranya dengan cepat. Sebagai contoh, kelas Counter berikut menjana julat nilai:
class Counter: def __init__(self, low, high): self.current = low - 1 self.high = high def __iter__(self): return self def __next__(self): self.current += 1 if self.current < self.high: return self.current raise StopIteration
Dengan memanggil kaedah __iter__() pada kelas ini, kami memperoleh iterator yang akan menjana nilai dalam julat yang ditentukan.
Kesimpulan
Pelajar Python menyediakan mekanisme yang kuat dan fleksibel untuk berulang ke atas jujukan atau menjana nilai. Memahami protokol iterator dan cara melaksanakan iterator tersuai memperkasakan pembangun untuk mencipta kod yang cekap dan serba boleh.
Atas ialah kandungan terperinci Bagaimana Python Iterator Berfungsi: Panduan kepada Kaedah `__iter__` dan `__next__`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!