Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana Python Iterator Berfungsi: Panduan kepada Kaedah `__iter__` dan `__next__`?

Bagaimana Python Iterator Berfungsi: Panduan kepada Kaedah `__iter__` dan `__next__`?

Susan Sarandon
Susan Sarandonasal
2024-12-18 01:08:11689semak imbas

How Do Python Iterators Work: A Guide to the `__iter__` and `__next__` Methods?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn