Memahami kata kunci hasil dalam Python memerlukan kebiasaan dengan iterables dan penjana.
Iterables ialah objek seperti senarai dan rentetan yang boleh diulang pada satu elemen pada satu masa.
Penjana ialah lelaran yang menghasilkan nilai satu demi satu tanpa menyimpan keseluruhan jujukan dalam ingatan.
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.
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.
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.
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!