Bolehkah Anda Meremajakan Objek Penjana Python untuk Digunakan Semula?

Mary-Kate Olsen
Lepaskan: 2024-11-02 13:52:02
asal
325 orang telah melayarinya

Can You Rejuvenate a Python Generator Object for Reuse?

Meremajakan Objek Penjana dalam Python

Menghadapi objek penjana yang telah menghasilkan berbilang nilai, anda mungkin berusaha untuk memperbaharuinya untuk digunakan semula. Usaha ini berpunca daripada keinginan untuk mengelakkan penyediaan yang memakan masa yang berkaitan dengan penciptaan penjana.

Malangnya, tidak seperti ouroboros, penjana tidak boleh menjana semula dirinya. Walau bagaimanapun, beberapa strategi menawarkan penangguhan:

Pilihan 1: Menghidupkan Penjana

Seperti burung phoenix, anda boleh menghidupkan semula penjana dengan menggunakan fungsi induknya semula:

<code class="python">y = FunctionWithYield()
for x in y: print(x)
y = FunctionWithYield()
for x in y: print(x)</code>
Salin selepas log masuk

Pendekatan ini memastikan pengiraan baru tetapi datang pada harga mengulangi langkah penyediaan yang mahal.

Pilihan 2: Memelihara Pemeliharaan

Merangkul pemeliharaan, anda boleh menyimpan hasil penjana dalam struktur data yang membenarkan berbilang lelaran :

<code class="python">y = list(FunctionWithYield())
for x in y: print(x)
# Can iterate again:
for x in y: print(x)</code>
Salin selepas log masuk

Walaupun kaedah ini melindungi daripada pengiraan berulang, ia menanggung overhed storan.

Mengimbangi Memori dan Pemprosesan

Pilihan antara pilihan ini menunjukkan pertukaran klasik antara memori dan pemprosesan. Pilihan 1 mengorbankan masa pemprosesan manakala Pilihan 2 membebankan ingatan.

Wawasan Tambahan

Walaupun tee, seperti yang dicadangkan oleh orang lain, menyediakan fungsi yang menyerupai penimbalan memori, ia masih menanggung overhed storan dan ciri prestasi yang sama sebagai Pilihan 2.

Atas ialah kandungan terperinci Bolehkah Anda Meremajakan Objek Penjana Python untuk Digunakan Semula?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!