Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Kata Kunci `hasil` Python Mencipta dan Mengurus Penjana?

Bagaimanakah Kata Kunci `hasil` Python Mencipta dan Mengurus Penjana?

DDD
DDDasal
2024-12-21 08:51:09475semak imbas

How Does Python's `yield` Keyword Create and Manage Generators?

Apakah yang dilakukan oleh Kata Kunci "hasil" dalam Python?

Pengenalan

Memahami kata kunci hasil dalam Python memerlukan kebiasaan dengan iterables dan penjana.

Iterables

Iterables ialah objek seperti senarai dan rentetan yang boleh diulang pada satu elemen pada satu masa.

Penjana

Penjana ialah lelaran yang menghasilkan nilai satu demi satu tanpa menyimpan keseluruhan jujukan dalam ingatan.

Hasil

Kata kunci hasil berfungsi seperti pernyataan pulangan dalam fungsi penjana. Walau bagaimanapun, bukannya menamatkan fungsi, ia menjeda pelaksanaan dan mengembalikan nilai. Apabila iterator disambung semula, pelaksanaan diteruskan dari tempat ia dijeda.

Kod Anda Diterangkan

Penjana:

def _get_child_candidates(self, distance, min_dist, max_dist):
    # Check if a left child exists and the distance is within range
    if self._leftchild and distance - max_dist < self._median:
        yield self._leftchild

    # Check if a right child exists and the distance is within range
    if self._rightchild and distance + max_dist >= self._median:
        yield self._rightchild

Fungsi penjana ini mengembalikan nod anak dalam jarak yang ditetapkan julat.

Pemanggil:

result, candidates = [], [self]  # Initialize empty result and candidates list

while candidates:  # Iterate while candidates are available
    node = candidates.pop()
    distance = node._get_dist(obj)
    
    if distance <= max_dist and distance >= min_dist:  # Check distance range
        result.extend(node._values)

    candidates.extend(node._get_child_candidates(distance, min_dist, max_dist))  # Add children to candidates list

return result

Pemanggil memulakan dan melelang melalui senarai nod calon, menggunakan fungsi penjana untuk mengembangkan senarai calon semasa menggelung. Ia menyemak julat jarak dan menambah nod anak jika sesuai.

Penggunaan Penjana Terperinci

Kata kunci hasil membolehkan kawalan ke atas keletihan penjana. Dengan menetapkan bendera untuk menghentikan lelaran, anda boleh menjeda dan menyambung semula akses kepada nilai penjana.

Itertools

Modul itertools menyediakan fungsi untuk memanipulasi iterable. Contohnya, anda boleh membuat pilih atur senarai dengan mudah.

Atas ialah kandungan terperinci Bagaimanakah Kata Kunci `hasil` Python Mencipta dan Mengurus 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