Memahami Penjana dalam Python: Perspektif Pengaturcara Java
Penjana ialah ciri unik dalam Python yang menawarkan cara yang cekap memori untuk menghasilkan urutan nilai. Walaupun penjana yang setara dengan Java ialah penjanaan benang, penjana ialah mekanisme tersendiri yang melengkapkan model pengeluar pengguna tradisional.
Apakah itu Penjana?
Penjana ialah fungsi yang berkelakuan seperti lelaran, menghasilkan nilainya satu demi satu daripada mengembalikan semua nilainya sekaligus. Ini dicapai menggunakan kata kunci hasil, yang menggantung pelaksanaan fungsi sehingga panggilan seterusnya.
Mengapa Menggunakan Penjana?
Penjana menawarkan beberapa kelebihan:
Contoh:
Pertimbangkan kod Python berikut yang menjana nombor Fibonacci:
def fib(): a, b = 0, 1 while True: yield a a, b = b, a + b
Fungsi penjana ini menghasilkan yang seterusnya Nombor Fibonacci setiap kali ia dipanggil. Coretan kod berikut menunjukkan cara menggunakan penjana:
import itertools fib_numbers = list(itertools.islice(fib(), 10)) print(fib_numbers)
Perbandingan Java:
Java tidak mempunyai persamaan langsung untuk penjana Python. Walau bagaimanapun, adalah mungkin untuk mensimulasikan tingkah laku mereka menggunakan lambdas berulang atau rujukan kaedah. Sebagai contoh, nombor Fibonacci boleh dijana dalam Java menggunakan lambda:
public static Stream<Integer> fib() { int a = 0, b = 1; Stream<Integer> stream = Stream.iterate(a, n -> { int tmp = n; n = a + b; a = tmp; return n; }); return stream; }
Atas ialah kandungan terperinci Bagaimanakah Penjana Python Berbeza Daripada Pendekatan Java kepada Penjanaan Urutan Berulang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!