Dalam pengaturcaraan Python, pemprosesan gelung tidak dapat dielakkan, yang melibatkan dua konsep penting, iaitu objek lelaran dan iterator (Iterable & Iterator). Saya akan memperkenalkan topik lelaran ini dalam dua hingga tiga bahagian untuk membantu anda memahami dan mengaplikasikannya dalam pengaturcaraan sebenar. Artikel ini adalah yang pertama.
Objek boleh Iterable (Iterable) merujuk kepada objek yang boleh mengembalikan satu ahli pada satu masa. Contoh objek boleh lelar termasuk semua jenis jujukan (seperti senarai, str dan tuple) dan beberapa jenis bukan jujukan seperti dict, objek fail dan sebarang objek kelas yang anda tentukan yang melaksanakan kaedah __iter__() atau __getitem__ Urutan semantik yang ditentukan oleh kaedah () - dan protokol lelaran (lihat di sini untuk butiran: ).
Objek boleh lelar boleh digunakan dalam untuk gelung dan tempat lain yang memerlukan jujukan (seperti zip(), peta(), penapis()...). Apabila objek boleh lelar dihantar sebagai parameter kepada fungsi terbina dalam iter(), ia mengembalikan lelaran objek itu. Iterator ini hanya sesuai untuk traversal satu kali set nilai. Apabila bekerja dengan objek lelaran, anda biasanya tidak perlu memanggil iter() atau mengendalikan objek lelaran sendiri. Ini dilakukan secara automatik menggunakan pernyataan for, yang mencipta pembolehubah sementara yang tidak dinamakan yang digunakan untuk menahan lelaran semasa gelung.
Ringkasnya, objek boleh lelar ialah sebarang objek kelas yang melaksanakan kaedah __iter__() atau kaedah __getitem__().
Iterator (Pelajar) merujuk kepada objek yang mewakili aliran data. Berulang kali memanggil kaedah __next__() iterator (atau menghantarnya ke fungsi terbina dalam next()) akan mengembalikan item berturut-turut dalam strim. Apabila tiada lagi data tersedia, pengecualian StopIteration dinaikkan. Pada ketika ini, objek iterator telah habis dan sebarang panggilan lanjut ke kaedah __next__() akan menaikkan StopIteration semula. Iterator mesti mempunyai kaedah __iter__() yang mengembalikan objek iterator itu sendiri, jadi setiap iterator juga boleh lelaran dan boleh digunakan di kebanyakan tempat yang menerima objek lelaran lain.
Ringkasnya, iterator ialah objek aliran data yang melaksanakan dua kaedah protokol iterator __next__() dan __iter__().
Pengecualian yang ketara ialah kod yang cuba diulang beberapa kali (menggunakan lelaran yang sama beberapa kali). Objek bekas (seperti senarai) menjana lelaran baharu setiap kali ia dihantar ke fungsi iter() atau digunakan dalam gelung for. Mencuba ini dengan iterator hanya akan mengembalikan objek lelaran yang telah habis digunakan semasa lelaran sebelumnya, menjadikannya kelihatan seperti bekas kosong. Jadi elakkan situasi ini semasa menulis kod.
Selain itu, anda perlu memahami bahawa fungsi terbina dalam iter() (yang memanggil kaedah __iter__() di belakang tabir) mengembalikan objek lelaran. Jadi kita boleh katakan. Iterable ialah objek yang mengembalikan iterator.
Untuk memahami lebih lanjut iterator dan objek boleh lelar, saya akan membuat susulan dengan penjelasan dan contoh kod untuk memperkenalkan kandungan utama berikut:
Atas ialah kandungan terperinci Pengaturcaraan Python: Objek yang boleh diulang dan iterator (Boleh Diulang & Pengulang). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!