簡體   English   中英

從函數返回多個值的最佳方法是什么?

[英]What's the best way to return multiple values from a function?

我有一個函數,我需要對字符串做一些事情。 我需要函數返回一個布爾值,指示操作是否成功,我還需要返回修改后的字符串。

在 C# 中,我會為字符串使用 out 參數,但在 Python 中沒有等價物。 我對 Python 還是很陌生,我唯一能想到的就是返回一個帶有布爾值和修改過的字符串的元組。

相關問題: 函數返回多個值是pythonic嗎?

def f(in_str):
    out_str = in_str.upper()
    return True, out_str # Creates tuple automatically

succeeded, b = f("a") # Automatic tuple unpacking

如果操作不成功,為什么不拋出異常? 就我個人而言,我傾向於認為,如果您需要從函數中返回多個值,您應該重新考慮是否以正確的方式做事或使用對象。

但更直接地說,如果你拋出一個異常,你就是在強迫他們處理這個問題。 如果您嘗試返回一個指示失敗的值,很可能有人無法檢查該值並最終導致一些可能難以調試的錯誤。

返回一個元組。

def f(x):
    # do stuff
    return (True, modified_string)

success, modified_string = f(something)

返回元組是在 Python 中執行此操作的常用方法。

為失敗拋出異常是一種很好的處理方式,如果您要返回許多不同的值,則可以返回一個元組。 對於您引用的特定情況,我經常采用中間方法:成功時返回修改后的字符串,失敗時返回 None。 對於一個未重構的 C 程序員,我已經足夠想要在失敗時返回一個指向 char 的 NULL 指針了。

如果我正在編寫一個例程作為更大庫的一部分並被其他開發人員使用,我會在失敗時拋出異常。 當我吃自己的狗糧時,我可能會返回不同類型的食物並在返回時進行測試。

您可以將 return 語句與多個表達式一起使用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM