Rumah > Peranti teknologi > industri IT > Petua cepat: Memahami kata kunci hasil dalam python

Petua cepat: Memahami kata kunci hasil dalam python

Jennifer Aniston
Lepaskan: 2025-02-18 10:20:10
asal
510 orang telah melayarinya

3

Quick Tip: Understanding the Yield Keyword in Python Terima kasih kepada Shaumik Daityari untuk membantu meninjau artikel ini.

Petua cepat: Memahami kata kunci hasil dalam python Apabila kita memanggil fungsi di Python, fungsi ini biasanya akan mula berfungsi sehingga ia menemui pulangan, pengecualian, atau mencapai akhir - selepas itu ia mengembalikan kawalan kembali kepada pemanggil. Setiap kali anda memanggil fungsi itu lagi, proses akan bermula dari

Scratch

! Katakanlah bahawa anda meminta seseorang untuk mengesan kereta merah di jalan raya. Orang itu akan terus mendapat soalan yang bertanya kepada mereka jika mereka melihat kereta merah atau tidak, dan orang itu akan menjawab sama ada 'ya' atau 'tidak'. Jika orang itu menjawab 'ya', bilangan kali kereta merah itu akan meningkat akan meningkat.

mari kita lihat bagaimana kita boleh melakukan ini di Python:

Jika anda menjalankan program ini, apa yang anda perhatikan? Adakah anda perasan bahawa bilangan kali untuk jawapan 'ya' sentiasa dihadkan pada 1, dan apabila anda menjawab 'tidak' bilangan kali mendapat 0 tanpa mengira 'ya' sebelum ini?

di sinilah kata kunci hasil Python. Hasil adalah cara yang mana kita

sementara

kawalan tangan kepada pemanggil, dan mengharapkan untuk meneruskan dari titik di mana kawalan telah diserahkan.
import time

def red_cars(answer):
    n = 0
    while True:
        if answer == 'yes':
            n = n + 1
            return n
        else:
            return n

stop = time.time() + 5 * 60
while time.time() < stop:
    answer = raw_input('Did you spot a red car on the road? ("yes" or "no"): ')
    times = red_cars(answer)
    print 'You have spotted ' + str(times) + ' cars so far!'
Salin selepas log masuk

Sebelum memberikan penyelesaian kepada contoh di atas, izinkan saya menunjukkan contoh yang sangat mudah untuk menggambarkan lebih baik bagaimana hasil berfungsi.

Katakan kita mempunyai skrip python mudah berikut:

Jika anda menjalankan skrip, anda akan mendapat output berikut:

Sekarang, jika kita menggunakan hasil sebaliknya, seperti berikut:

def step_by_step():
    return 'step 1'
    return 'step 2'
    return 'step 3'
    
step = step_by_step()
for i in range (3):
    print step
Salin selepas log masuk

output akan menjadi seperti berikut:

step 1
step 1
step 1
Salin selepas log masuk

seperti yang anda lihat, kami dapat mencipta siri

def step_by_step():
    yield 'step 1'
    yield 'step 2'
    yield 'step 3'
    
step = step_by_step()
for i in range (3):
    print step.next()
Salin selepas log masuk
nilai -nilai, seperti bagi setiap panggilan fungsi berterusan dari titik di mana ia menghasilkan nilai. Fungsi jenis ini dipanggil penjana. Fungsi sedemikian mewujudkan lelaran penjana, seperti setiap panggilan ke kaedah seterusnya () kita berpindah ke pernyataan hasil seterusnya.

Jika kita kembali ke contoh utama kita (kereta merah), ia boleh ditulis seperti berikut untuk melaksanakan tugas yang diperlukan:
step 1
step 2
step 3
Salin selepas log masuk

Oleh itu, seperti yang dapat kita lihat, hasilnya dianggap penting apabila kita berminat untuk meneruskan pelaksanaan pada titik terakhir di mana fungsi (penjana) keluar, dan di mana kita juga berminat untuk mengekalkan nilai pembolehubah tempatan antara panggilan yang berbeza - Tidak seperti fungsi biasa, di mana nilai -nilai tersebut dimusnahkan apabila keluar dari fungsi.

Terdapat, bagaimanapun, penggunaan hasil lain. Sebagai contoh, anda boleh menggunakan hasil jika anda mempunyai fungsi yang mengembalikan urutan (contohnya, baris dalam lembaran Excel) dan anda perlu melangkah ke atas urutan tanpa setiap nilai dalam memori sekaligus. Iaitu, untuk menyelamatkan ingatan.

Hasil juga boleh digunakan semasa bekerja dengan ayat, di mana kita mempunyai senarai besar yang sukar untuk dilalui antara fungsi. Sebagai contoh, fungsi terbina Python untuk permutasi dan kombinasi dalam modul penggunaan modul ITERTools.

Soalan Lazim (Soalan Lazim) Mengenai Kata Kunci Hasil dalam Python

Apakah perbezaan antara kata kunci hasil dan pulangan dalam Python? Kata kunci kembali digunakan apabila anda mahu fungsi menghasilkan nilai dan kemudian ditamatkan. Sebaik sahaja fungsi mengembalikan nilai, ia dilakukan pelaksanaan dan kawalan diluluskan kembali kepada pemanggil. Sebaliknya, kata kunci hasil digunakan dalam fungsi seperti pernyataan pulangan, tetapi ia menghasilkan nilai dan menangguhkan pelaksanaan fungsi. Fungsi ini dapat disambung semula kemudian dari mana ia berhenti, membolehkannya menghasilkan satu siri nilai dari masa ke masa, bukannya mengira mereka sekaligus dan menghantarnya kembali seperti senarai.

Bagaimana kata kunci hasil Bekerja di Python?

Kata kunci hasil dalam python digunakan dalam fungsi dengan gelung untuk membuat iterator. Apabila fungsi dipanggil, ia mengembalikan iterator, tetapi tidak memulakan pelaksanaan dengan segera. Apabila kaedah Iterator seterusnya () dipanggil, fungsi mula dilaksanakan. Sebaik sahaja ia menemui kata kunci hasil, ia mengembalikan hujah yang diluluskan untuk menghasilkan dan menjeda pelaksanaan. Fungsi ini dapat disambung Dalam Python? 🎜>

Untuk nilai dalam simple_generator ():

cetak (nilai)

Dalam contoh ini, simple_generator adalah fungsi penjana kerana ia menggunakan kata kunci hasil. Apabila kita melelehkan objek penjana yang dikembalikan oleh Simple_Generator (), ia menghasilkan 1, kemudian 2, kemudian 3, menjeda pelaksanaannya antara setiap hasil. >

Kata kunci hasil dalam Python membolehkan anda menulis fungsi yang dapat menghasilkan urutan hasil dari masa ke masa, dan bukannya mengira mereka sekaligus dan mengembalikannya dalam senarai misalnya. Ini boleh menjadi sangat berguna apabila set hasilnya besar dan anda ingin menyimpan ingatan. Ia juga membolehkan anda membuat objek anda sendiri dan menggunakannya dengan Python untuk gelung, pemantauan, dan fungsi lain yang mengharapkan yang boleh dimakan.

Bolehkah fungsi mengandungi kedua -dua pernyataan hasil dan pulangan dalam Python? Walau bagaimanapun, penting untuk diperhatikan bahawa sekali pernyataan pulangan dilaksanakan, pelaksanaan fungsi ditamatkan, dan kawalan diteruskan kembali kepada pemanggil. Oleh itu, jika pernyataan pulangan dilaksanakan sebelum pernyataan hasil, pernyataan hasil tidak akan dapat dicapai. Sebaliknya, jika pernyataan hasil dilaksanakan terlebih dahulu, fungsi akan dijeda dan kawalan akan diteruskan kembali kepada pemanggil, tetapi fungsi itu dapat disambung semula kemudian, di mana pernyataan kembali dapat dilaksanakan. Bolehkah saya menggunakan kata kunci hasil dalam fungsi rekursif dalam python?

Ya, anda boleh menggunakan kata kunci hasil dalam fungsi rekursif dalam python. Walau bagaimanapun, anda perlu ingat untuk berulang atas panggilan rekursif dan menghasilkan setiap nilai, jika tidak, anda akan mendapat objek penjana dan bukannya nilai yang anda harapkan. Dalam python?

Perbezaan utama antara fungsi penjana dan fungsi normal dalam python ialah fungsi penjana menggunakan kata kunci hasil dan fungsi normal menggunakan kata kunci pulangan. Apabila fungsi penjana dipanggil, ia mengembalikan objek penjana tanpa memulakan pelaksanaan fungsi. Apabila kaedah seterusnya () dipanggil untuk kali pertama, fungsi mula melaksanakan sehingga mencapai kata kunci hasil, yang menghasilkan nilai. Fungsi itu kemudian menjeda pelaksanaan dan kawalan diluluskan kembali kepada pemanggil. Sebaliknya, apabila fungsi normal dipanggil, ia memulakan pelaksanaan dengan segera dan berjalan hingga selesai, mengembalikan nilai. Ya, anda boleh menggunakan beberapa pernyataan hasil dalam satu fungsi dalam Python. Apabila fungsi dipanggil, ia akan menghasilkan nilai setiap kali ia menemui pernyataan hasil, berhenti pelaksanaannya dan lulus kawalan kembali kepada pemanggil. Pada masa yang akan datang kaedah seterusnya () kaedah dipanggil, ia akan meneruskan pelaksanaan dari mana ia berhenti dan berlari sehingga ia menemui pernyataan hasil seterusnya. Python?

Apabila fungsi penjana di Python tidak mempunyai nilai lagi untuk menghasilkan, ia menimbulkan pengecualian stopiteration. Anda boleh menangkap pengecualian ini dengan menggunakan blok percubaan/kecuali. Berikut adalah contoh:

def simple_generator ():

hasil 1

hasil 2

hasil 3

gen = simple_generator ()

cuba:

cetak (seterusnya (gen))

kecuali stopiteration:
break

Dalam contoh ini, kita menangkap pengecualian stopiteration dan keluar dari gelung apabila tidak ada lebih banyak nilai untuk menghasilkan.

Bolehkah saya menggunakan kata kunci hasil dalam fungsi lambda dalam python?

Tidak, anda tidak boleh menggunakan kata kunci hasil dalam fungsi lambda dalam python. Ini kerana fungsi Lambda terhad kepada satu ungkapan, dan kata kunci hasil memperkenalkan konteks pernyataan. Jika anda perlu membuat fungsi penjana, anda perlu menggunakan pernyataan DEF untuk menentukan fungsi biasa.

Atas ialah kandungan terperinci Petua cepat: Memahami kata kunci hasil dalam python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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