目錄
什麼是 Python Yield?
範例
輸出
Python 中收益率和回報之間的差異
結論
首頁 後端開發 Python教學 在Python中,Yield和Return之間的差異是什麼?

在Python中,Yield和Return之間的差異是什麼?

Sep 15, 2023 pm 03:37 PM
yield - 生成器 return - 回傳值 區別 - yield vs return

在Python中,Yield和Return之間的差異是什麼?

在Python中,生成器的定義是在yield語句的幫助下完成的。因此,在我們深入了解 yield 實際用途的細節之前,了解 生成器 的概述非常重要。如果您接觸過 Python,那麼有一個很好的選擇您以前使用過 Python 生成器的可能性。生成器在 Python 中發揮著重要作用。在 Python 中,可以使用生成器來產生迭代器,但這個過程採用了稍微不同的形式。

Python 產生器是可以動態暫停和恢復並建立一系列結果的函數。它們也可以用來產生隨機數。在 Python 2.2 中,生成器首次作為選用功能引入。在 Python 2.3 中,它們被強制執行。 Python 2.5 中的生成器功能得到了極大的改進,儘管它們已經擁有足夠的功能。

為了保持向後相容性,Python 2.2 中新增產生器導致引入了一個名為「yield」的新關鍵字。為了使用生成器,我們需要從 _future_ 模組導入它們。當生成器成為 Python 2.3 版本中的預設設定時,對此進行了更改以反映不再需要更改的事實。

使用yield語句可以暫時停止函數的執行,然後語句將一個值傳回給呼叫者,同時保存函數的狀態以供以後恢復。這意味著在獲得返回值後仍然可以重新啟動整個生成器。函數的執行以 return 語句終止,語句也會向呼叫函數的人傳回一個值。如果缺少,您的函數將不會傳回任何內容。

什麼是 Python Yield?

在 Python 產生器中,yield 語句取代了函數的return,以便將值傳回給呼叫產生器的人,而不會刪除任何局部變數。為了更好地理解Python程式設計中yield語句執行的功能,您首先需要熟悉生成器。

生成器函數和普通函數的差別在於生成器函數的定義中有一個「yield」語句。它以“yield”關鍵字開頭,它標識要傳回給呼叫此函數的人的生成器物件。

在 Python 中,一種稱為「生成器」的特定類型的函數不是將資料值傳回給呼叫函數的人,而是傳回另一個生成器物件。借助 yield 關鍵字,可以暫時停止函數的執行,保存狀態,並且可以稍後恢復函數。

範例

看看下面的範例 -

# Use of yield
def printresult(String): 
   for i in String: 
      if i == "p": 
         yield i 

# Initializing string 
String = "Happy Birthday" 
ans = 0
print ("The number of 'p' in word is: ", end = "" ) 
String = String.strip() 

for j in printresult(String): 
   ans = ans + 1

print (ans)

輸出

The number of 'p' in word is: 2

什麼是Python Return?

yield 語句相反,return 語句會導致函數終止,同時將值傳回呼叫它的函數。本質上更具過程性的函數不會明確地向呼叫者傳回任何內容,而是傳回一個傳回呼叫函數的值。儘管一個函數可以有多個 return 語句,但對於這些語句各自的每一個調用,只能調用其中一個。

幾乎總是將 return 語句放置在函數區塊的最末尾,其目的是傳回執行該函數中包含的所有語句的最終結果。但是,return 語句也可能出現在函數區塊的前面,以停止該區塊中所有後續語句的執行。如果它被用來阻止函數的執行,就會出現這種情況。這會導致呼叫者立即重新啟動程式的執行。當沒有為 return 物件提供任何值時,「None」傳回物件類型與 Python 中的等效。

範例

以下範例展示了 Python 中 return 的使用 -

# Show return statement 
class Test:  
   def __init__(self):  
      self.str = "Happy Birthday"
      self.x = "Pradeep"

# This function returns an object of Test  
def fun():  
   return Test()  
# Driver code to test above method  
t = fun()   
print(t.str)  
print(t.x) 

輸出

Happy Birthday
Pradeep

Python 中收益率和回報之間的差異

下表突顯了 Python 中的 Yield 和 Return 之間的主要差異 -

比較基礎 產量 返回
基礎 在大多數情況下,您需要使用yield函數將典型的Python函數轉換為生成器。 在大多數情況下,執行的結束是透過使用 return 關鍵字來表示的,該關鍵字將結果「傳回」到呼叫它的語句。
功能 它取代函數的返回,以便暫停函數的執行而不丟失任何局部變數。 它退出函數並向其呼叫者傳回一個值。
使用 當生成器向呼叫者提供中間結果時,呼叫者將使用此函數。 當一個函數準備傳遞一個值時,有必要使用this。
執行 yield語句後編寫的程式碼將在下面的函數呼叫中執行。 雖然return語句之後所寫的程式碼將不會被執行。
編譯 它具有多次運行的能力。 它一次只運行一次。

結論

yield語句產生一個生成器對象,並且可以在不終止程式的情況下向呼叫者返回多個值,而return語句用於向呼叫者傳回一個值從函數內部,它終止程式。 return 語句用來將值從函數內部傳回給呼叫者。

以上是在Python中,Yield和Return之間的差異是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱門文章

Rimworld Odyssey溫度指南和Gravtech
1 個月前 By Jack chen
Rimworld Odyssey如何釣魚
1 個月前 By Jack chen
我可以有兩個支付帳戶嗎?
1 個月前 By 下次还敢
初學者的Rimworld指南:奧德賽
1 個月前 By Jack chen
PHP變量範圍解釋了
3 週前 By 百草

熱工具

記事本++7.3.1

記事本++7.3.1

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

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

熱門話題

Laravel 教程
1603
29
PHP教程
1508
276
如何處理Python中的API身份驗證 如何處理Python中的API身份驗證 Jul 13, 2025 am 02:22 AM

處理API認證的關鍵在於理解並正確使用認證方式。 1.APIKey是最簡單的認證方式,通常放在請求頭或URL參數中;2.BasicAuth使用用戶名和密碼進行Base64編碼傳輸,適合內部系統;3.OAuth2需先通過client_id和client_secret獲取Token,再在請求頭中帶上BearerToken;4.為應對Token過期,可封裝Token管理類自動刷新Token;總之,根據文檔選擇合適方式,並安全存儲密鑰信息是關鍵。

python循環在元組上 python循環在元組上 Jul 13, 2025 am 02:55 AM

在Python中,用for循環遍曆元組的方法包括直接迭代元素、同時獲取索引和元素、以及處理嵌套元組。 1.直接使用for循環可依次訪問每個元素,無需管理索引;2.使用enumerate()可同時獲取索引和值,默認索引起始為0,也可指定start參數;3.對嵌套元組可在循環中解包,但需確保子元組結構一致,否則會引發解包錯誤;此外,元組不可變,循環中不能修改內容,可用\_忽略不需要的值,且建議遍歷前檢查元組是否為空以避免錯誤。

如何在Python中解析大型JSON文件? 如何在Python中解析大型JSON文件? Jul 13, 2025 am 01:46 AM

如何在Python中高效處理大型JSON文件? 1.使用ijson庫流式處理,通過逐項解析避免內存溢出;2.若為JSONLines格式,可逐行讀取並用json.loads()處理;3.或先將大文件拆分為小塊再分別處理。這些方法有效解決內存限制問題,適用於不同場景。

Python類可以有多個構造函數嗎? Python類可以有多個構造函數嗎? Jul 15, 2025 am 02:54 AM

Yes,aPythonclasscanhavemultipleconstructorsthroughalternativetechniques.1.Usedefaultargumentsinthe__init__methodtoallowflexibleinitializationwithvaryingnumbersofparameters.2.Defineclassmethodsasalternativeconstructorsforclearerandscalableobjectcreati

python for Loop範圍 python for Loop範圍 Jul 14, 2025 am 02:47 AM

在Python中,使用for循環配合range()函數是控制循環次數的常見方式。 1.當明確知道循環次數或需按索引訪問元素時使用;2.range(stop)從0到stop-1,range(start,stop)從start到stop-1,range(start,stop,step)加入步長;3.注意range不包含結束值,且在Python3返回可迭代對象而非列表;4.可通過list(range())轉換為列表,倒序時用負步長。

用於量子機學習的Python 用於量子機學習的Python Jul 21, 2025 am 02:48 AM

要入門量子機器學習(QML),首選工具是Python,需安裝PennyLane、Qiskit、TensorFlowQuantum或PyTorchQuantum等庫;接著通過運行示例熟悉流程,如使用PennyLane構建量子神經網絡;然後按照數據集準備、數據編碼、構建參數化量子線路、經典優化器訓練等步驟實現模型;實戰中應避免一開始就追求復雜模型,關注硬件限制,採用混合模型結構,並持續參考最新文獻和官方文檔以跟進發展。

從Python中的Web API訪問數據 從Python中的Web API訪問數據 Jul 16, 2025 am 04:52 AM

使用Python調用WebAPI獲取數據的關鍵在於掌握基本流程和常用工具。 1.使用requests發起HTTP請求是最直接的方式,通過get方法獲取響應並用json()解析數據;2.對於需要認證的API,可通過headers添加token或key;3.需檢查響應狀態碼,推薦使用response.raise_for_status()自動處理異常;4.面對分頁接口,可通過循環依次請求不同頁面並加入延時避免頻率限制;5.處理返回的JSON數據時需根據結構提取信息,複雜數據可用pandas轉換為Data

python一行,如果還有 python一行,如果還有 Jul 15, 2025 am 01:38 AM

Python的onelineifelse是三元操作符,寫法為xifconditionelsey,用於簡化簡單的條件判斷。它可用於變量賦值,如status="adult"ifage>=18else"minor";也可用於函數中直接返回結果,如defget_status(age):return"adult"ifage>=18else"minor";雖然支持嵌套使用,如result="A"i

See all articles