在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中文網其他相關文章!

熱AI工具

Undress AI Tool
免費脫衣圖片

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

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

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

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

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

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

Yes,aPythonclasscanhavemultipleconstructorsthroughalternativetechniques.1.Usedefaultargumentsinthe__init__methodtoallowflexibleinitializationwithvaryingnumbersofparameters.2.Defineclassmethodsasalternativeconstructorsforclearerandscalableobjectcreati

在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())轉換為列表,倒序時用負步長。

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

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

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