Memahami Utiliti "hantar" dalam Penjana Python
Walaupun konsep "hasil" dalam penjana Python difahami secara meluas, tujuannya fungsi "hantar" kekal samar-samar. Untuk menjelaskan, fungsi "hantar" membenarkan penghantaran nilai ke dalam penjana yang baru-baru ini menghasilkan nilai.
Pertimbangkan contoh ringkas berikut:
<code class="python">def double_inputs(): while True: x = yield yield x * 2</code>
Setelah mencipta contoh penjana (gen), melaksanakan pernyataan seterusnya(gen) memulakan penjana dan menggantung pelaksanaan pada kejadian "hasil" pertama. Selepas itu, menggunakan gen.send(10) menyuntik nilai 10 ke dalam pembolehubah "hasil". Penjana kemudiannya meneruskan untuk mengembalikan nilai 20, mewakili hasil operasi pendaraban.
Keupayaan untuk menghantar nilai ke dalam penjana menggunakan "hantar" membezakannya daripada "hasil" yang terutamanya menyampaikan nilai daripada penjana.
Aplikasi penting "hantar" terletak pada penghias "@defer.inlineCallbacks" Twisted. Ia membolehkan pelaksanaan fungsi yang lancar seperti:
<code class="python">@defer.inlineCallbacks def doStuff(): result = yield takesTwoSeconds() nextResult = yield takesTenSeconds(result * 10) defer.returnValue(nextResult / 10)</code>
Dalam contoh ini, "takesTwoSeconds" pada mulanya mengembalikan objek "Ditunda". Twisted memperuntukkan pengiraan ini kepada urutan latar belakang, dan setelah selesai, hasilnya disuntik ke dalam penjana doStuff menunggu melalui "hantar." Mekanisme ini memudahkan struktur kod, membolehkan aliran yang lebih linear dan mudah difahami apabila berurusan dengan operasi tak segerak.
Atas ialah kandungan terperinci Apakah Fungsi \'hantar\' Python dalam Penjana?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!