Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Apakah Fungsi \"hantar\" Python dalam Penjana?

Apakah Fungsi \"hantar\" Python dalam Penjana?

Linda Hamilton
Linda Hamiltonasal
2024-11-03 08:50:02465semak imbas

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>

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!

Kenyataan:
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