Rumah > pembangunan bahagian belakang > Tutorial Python > Apakah Fungsi \'hantar\' Python dalam Penjana?

Apakah Fungsi \'hantar\' Python dalam Penjana?

Linda Hamilton
Lepaskan: 2024-11-03 08:50:02
asal
506 orang telah melayarinya

What Does Python's

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

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