Apakah yang dilakukan oleh kata kunci "hasil" dalam Python?
Kata kunci "hasil" Python digunakan dalam fungsi penjana, yang merupakan fungsi khas yang bertindak sebagai iterator.
Fungsi Penjana dan Iterator
- Iterators: Objek yang menghasilkan jujukan nilai satu demi satu.
- Fungsi Penjana: Fungsi yang mengembalikan iterator dan bukannya nilai tertentu. Mereka menggunakan kata kunci "hasil" untuk menjana nilai atas permintaan.
Fungsi "hasil"
Apabila fungsi penjana dipanggil:
- Fungsi penjana tidak menjalankan kodnya serta-merta.
- Sebaliknya, ia mengembalikan penjana objek.
- Objek penjana ini ialah lelaran yang menghasilkan nilai.
Apabila iterator digunakan dalam gelung 'untuk':
- Yang pertama apabila gelung menemui pernyataan "hasil", fungsi penjana menyambung semula pelaksanaan dan menghasilkan yang pertama nilai.
- Lelaran gelung seterusnya menyebabkan fungsi penjana disambung semula dan menghasilkan nilai seterusnya sehingga tiada lagi nilai yang tinggal.
- Fungsi penjana ditamatkan apabila ia mencapai penghujung logiknya atau menemui pernyataan "kembali".
Kod Contoh Penjelasan
Coretan kod yang diberikan mentakrifkan fungsi penjana yang dipanggil _get_child_candidates dalam kelas nod.
- Fungsi mengambil parameter jarak, min_dist dan max_dist.
- Ia menghasilkan nod anak kiri dan kanan jika jaraknya memenuhi nod kriteria.
- Jika tiada lagi kanak-kanak memenuhi kriteria, fungsi penjana ditamatkan.
Dalam kod pemanggil:
- hasil dimulakan sebagai kosong senarai.
- calon dimulakan sebagai senarai yang mengandungi objek nod semasa.
- Gelung lelaran ke atas calon.
- Bagi setiap nod, ia menyemak jarak dan menambah nilainya untuk terhasil jika ia memenuhi kriteria.
- Ia kemudian memanjangkan calon dengan nod anak yang diperoleh daripada penjana _get_child_candidates.
- Gelung berterusan sehingga semua nod anak telah diproses.
Faedah Penjana
- Kecekapan ingatan: Penjana tidak menyimpan semua nilai dalam ingatan, tidak seperti senarai.
- Penilaian malas: Nilai dikira hanya apabila penjana diulang, mengurangkan pengiraan overhead.
- Kawalan lanjutan ke atas lelaran: Anda boleh mengawal penjanaan nilai menggunakan logik dalam fungsi penjana.
Atas ialah kandungan terperinci Bagaimanakah Kata Kunci `menghasilkan` Python Mencipta Iterator yang Cekap dalam Fungsi Penjana?. 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