搜尋
首頁科技週邊IT業界快速提示:了解Python中的收益關鍵詞

Quick Tip: Understanding the Yield Keyword in Python

快速提示:了解Python中的收益關鍵詞

感謝Shaumik daityari的

,請幫助同行評論這篇文章。 >在python中調用功能時,該功能通常會開始工作,直到遇到返回,異常或達到其末端,然後將其返回控制回呼叫者。每當您再次調用該函數時,該過程將從

> cratch

開始 說您要求一個人在路上追踪紅色汽車。該人會不斷提出一個問題,問他們是否發現了一輛紅色的汽車,該人又以“是”或“否”回答。如果該人回答“是”,則發現紅色汽車的次數將增加。

>讓我們看看如何在Python中做到這一點:

如果您運行程序,您會注意到什麼?您是否注意到“是”答案的次數總是被限制為1,當您回答“否”時,次數會得到0,而不論以前回答“是”?

>
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() 這是Python的產量關鍵字發揮作用的地方。收益率是我們暫時向呼叫者進行手部控制的手段,並期望從移交控制的程度繼續進行。 <ancy>

在提供上述示例的解決方案之前,讓我演示一個非常簡單的示例,以更好地說明產量的工作方式。

<p>說我們有以下簡單的python腳本:</p>


<p>

<em>如果運行腳本,您將獲得以下輸出:</em>>

</p>

<p>現在,如果我們使用收益率,如下:</p>>

<p>

</p>輸出將如下:<pre class="brush:php;toolbar:false">def step_by_step():
    return 'step 1'
    return 'step 2'
    return 'step 3'
    
step = step_by_step()
for i in range (3):
    print step
>

如您所見,我們能夠創建值的值

序列
step 1
step 1
step 1
,因為對於每個調用,該函數從產生值的點開始。這種類型的功能稱為生成器。這樣的函數會創建一個生成器迭代器,就像每個調用方法Next()我們轉到下一個收益率語句。

如果我們回到主要示例(紅色汽車),則可以按以下方式寫入所需任務:

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()
因此,正如我們所看到的,當我們有興趣恢復函數(生成器)退出功能的最後一點以及我們也有興趣保持不同調用之間本地變量的值時,收益率很重要。 - 與正常功能不同,在退出功能時會破壞此類值。

>

但是,有其他產量的用途。例如,如果您具有返回序列的函數(例如,在Excel表中的行),則可以使用收益率,並且您需要在序列上迭代序列,而不會一次內存中每個值。也就是說,保存內存。
step 1
step 2
step 3
在使用迭代時,也可以使用

>收益率,在該功能之間我們有一個很難傳遞的大列表。例如,Python的內置功能可用於iTertools模塊中的排列和組合使用。

> python中的收益關鍵字的常見問題(常見問題解答)

python中的收益率和返回關鍵字之間有什麼區別?當您希望函數產生值然後終止時,將使用返回關鍵字。函數返回值後,執行並將控件傳遞回呼叫者。另一方面,收益率關鍵字在函數中使用,例如返回語句,但會產生一個值並暫停該函數的執行。該函數可以在稍後從關閉的位置恢復,允許其隨著時間的推移產生一系列值,而不是一次計算它們並像列表一樣將它們發送回去。

>如何產生關鍵字。在python?

中工作,python中的產量關鍵字用於具有循環創建迭代器的函數。當調用函數時,它將返回迭代器,但不會立即開始執行。當調用迭代器的Next()方法時,函數開始執行。一旦遇到收益率關鍵字,它就會返回傳遞的參數以屈服並停止執行。可以通過再次調用Next()從關閉的位置恢復該函數,從而允許該函數隨著時間的推移產生一系列值,表現為發電機。

您是否可以提供使用farter keyword的示例在python?

中,可以肯定的是,這是一個簡單的示例:在python中使用收益率關鍵字:

def simple_generator(): y> yarts 1

yourts 2

產量3 sipser_generator()中的值: print(value)

在此示例中,simple_generator是一個生成器函數,因為它使用了收益率關鍵字,因此
print(value)。當我們迭代由simple_generator()返回的發電機對象時,它產生了1,然後是2,然後是3,暫停了其在每個收益率之間的執行。
在python中使用收益率關鍵字有什麼好處? >
python中的收益關鍵字允許您編寫可以隨時間產生結果的序列,而不是一次計算它們並將其返回列表中。當結果集很大並且要保存內存時,這可能特別有用。它還允許您創建自己的迭代對象,並將它們與python的對像一起使用,以進行循環,綜合和其他期望具有疑問的功能。
>

>一個函數可以包含python?

中的收益率和返回語句,是的,python中的功能可以包含產量和返回語句。但是,重要的是要注意,一旦執行返回語句,函數的執行終止,並且控件將轉移回呼叫者。因此,如果在收益率聲明之前執行返迴聲明,將永遠無法達到收益表。相反,如果首先執行收益表語句,則該函數將被暫停,並且控制權將轉回呼叫者,但是稍後可以恢復該函數,此時可以執行返回語句。我可以在Python中使用遞歸功能中的收益關鍵字嗎?但是,您需要記住在遞歸調用上迭代並產生每個值,否則您將獲得一個發電機對象而不是期望的值。

>

>生成器函數與正常函數之間有什麼區別在Python?

中,生成器函數與Python中的正常函數之間的主要區別在於,生成器函數使用收益率關鍵字,而正常函數則使用返回關鍵字。當調用發電機函數時,它將返回生成器對象,甚至不啟動函數執行。當第一次調用Next()方法時,該函數開始執行,直到達到產量關鍵字(產生值)。然後,該功能暫停執行和控制將傳遞回呼叫者。另一方面,當調用正常函數時,它立即開始執行並運行到完成,返回一個值。

我可以在python中的單個函數中使用多個收益率語句嗎?是的,您可以在Python中的單個功能中使用多個收益語句。調用函數時,每次遇到收益率語句,暫停其執行並將控件傳遞回呼叫者時,它將產生一個值。下次調用函數的下一個()方法時,它將恢復執行從關閉的位置並運行直到遇到下一個收益率語句的執行。

>如何捕獲生成器函數在python?

> python中的發電機函數沒有更多的屈服值時,它會引起停止異常。您可以使用try/def block捕獲此異常。以下是一個示例:

def simple_generator():

屈服1

屈服2

產量3

gen = simple_generator()
嘗試:
print(next(gen))> stopiteration: break

在此示例中,我們捕獲了停止的異常,並在沒有的情況下脫離循環
的更多值

>我可以在python中使用lambda函數中的收益關鍵字嗎?這是因為lambda函數僅限於單個表達式,而產量關鍵字引入了語句上下文。如果您需要創建生成器函數,則需要使用DEF語句來定義正常函數。

以上是快速提示:了解Python中的收益關鍵詞的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
21個開發人員新聞通訊將在2025年訂閱21個開發人員新聞通訊將在2025年訂閱Apr 24, 2025 am 08:28 AM

與這些頂級開發人員新聞通訊有關最新技術趨勢的了解! 這個精選的清單為每個人提供了一些東西,從AI愛好者到經驗豐富的後端和前端開發人員。 選擇您的收藏夾並節省時間搜索REL

使用AWS ECS和LAMBDA的無服務器圖像處理管道使用AWS ECS和LAMBDA的無服務器圖像處理管道Apr 18, 2025 am 08:28 AM

該教程通過使用AWS服務來指導您通過構建無服務器圖像處理管道。 我們將創建一個部署在ECS Fargate群集上的next.js前端,與API網關,Lambda函數,S3桶和DynamoDB進行交互。 Th

CNCF ARM64飛行員:影響和見解CNCF ARM64飛行員:影響和見解Apr 15, 2025 am 08:27 AM

該試點程序是CNCF(雲本機計算基礎),安培計算,Equinix金屬和驅動的合作,簡化了CNCF GitHub項目的ARM64 CI/CD。 該計劃解決了安全問題和績效

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器