Pengenalan bahagian sebelumnya seharusnya memudahkan kita untuk memahami dan menguasai objek dan iterator yang boleh lelar (Iterable & Iterator) dalam Python.. Dalam kandungan ini, kami akan memperkenalkan kandungan iterator yang berkaitan.
Protokol IteratorDalam Python, objek iterator (Iterator) perlu menyokong dua kaedah berikut, yang bersama-sama membentuk protokol iterator:
1) __iter__():
Kaedah objek ini mengembalikan objek iterator itu sendiri. Ini diperlukan untuk bekas dan iterator untuk digunakan dengan pernyataan untuk masuk. Anda juga boleh menggunakan fungsi iter() terbina dalam, yang pada asasnya memanggil kaedah __iter__() di belakang tabir.2) __next__():
Kembalikan item seterusnya daripada iterator. Jika tiada item lain, pengecualian StopIteration dilemparkan. Anda juga boleh menggunakan fungsi next() terbina dalam untuk membaca item seterusnya, yang pada asasnya memanggil kaedah __next__(). Seperti yang kami katakan sebelum ini, senarai, tupel, kamus dan set adalah semua jenis yang boleh diubah. Dalam erti kata lain, ia adalah jenis dari mana iterator boleh diperolehi. Lihat contoh: Senarai coretan kod-01Hasil input adalah seperti berikut:A B C
P y
10 20 30 Traceback (most recent call last): File ……, in print(next(listIter)) StopIteration |
Dalam kod di atas, fungsi next() dipanggil empat kali, iaitu lebih daripada bilangan item dalam iterator. Dalam panggilan terakhir, pengecualian StopIteration telah dilemparkan - kerana elemen dalam iterator telah diulang. Selain itu, untuk memastikan pengecualian boleh dilemparkan selepas lelaran manual selesai, pengendalian pengecualian mesti dilakukan sendiri, jika tidak, pelaksanaan berikutnya tidak lagi normal.
Apa yang perlu disedari ialah dalam kebanyakan senario, kita tidak perlu memanggil sendiri kaedah seterusnya secara manual Gelung for dalam Python boleh secara automatik melintasi mana-mana objek yang boleh mengembalikan lelaran. Dalam erti kata lain, gelung for boleh lelaran ke atas mana-mana objek lelaran dalam Python.
Lihat contoh:
Coretan Penyenaraian Kod 04
Dalam kod di atas, kami menggunakan gelung for untuk berulang melalui senarai ditakrifkan lebih awal. Jelas sekali bahawa kami tidak menggunakan fungsi next() secara manual dan tidak mendapat sebarang pengecualian StopIteration. Inilah keindahan for loop dalam Python. Ia mengendalikan semua ini untuk kita di belakang tabir.
Sudah tentu, kami boleh mengendalikan sendiri lelaran gelung dengan cara ini. Sekarang tentukan versi gelung for kita sendiri. Kami akan menggunakan gelung sementara dan meniru kelakuan gelung for. Di sini, kami membina sendiri segala yang diperlukan untuk pelaksanaan ini. Seperti yang ditunjukkan di bawah:
Coretan Penyenaraian Kod-05
Dalam penyenaraian di atas, kami telah melaksanakan versi kami sendiri bagi gelung simulasi. Gelung while tak terhingga digunakan dalam kod: while True. Blok try-except disediakan di dalam gelung. Dalam blok cuba, dapatkan elemen seterusnya dengan memanggil kaedah __next__() pada iterator. Jika panggilan berjaya, elemen dicetak. Jika ralat jenis StopIteration berlaku, pengecualian terperangkap dalam blok except. Apa yang anda lakukan dalam blok kecuali adalah sangat mudah. Kami baru sahaja keluar dari gelung ini, yang bermaksud kami telah mencapai penghujung lelaran.
Itu sahaja untuk artikel ini, yang terutamanya memperkenalkan protokol lelaran dan traversal lelaran. Teks kandungannya tidak panjang, dan digabungkan dengan kod boleh membantu anda lebih memahami dan menguasai mata pengetahuan pengaturcaraan Python ini.
Atas ialah kandungan terperinci Protokol iterator dan kaedah traversal dalam pengaturcaraan Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!