我有一個函數,需要對字符串進行處理。我需要該函數返回一個布爾值,該布爾值指示操作是否成功,并且還需要返回修改后的字符串。在C#中,我將對字符串使用out參數,但是Python中沒有等效的參數。我對Python還是很陌生,我唯一想到的就是用布爾值和修改后的字符串返回一個元組。
3 回答

動漫人物
TA貢獻1815條經驗 獲得超10個贊
def f(in_str):
out_str = in_str.upper()
return True, out_str # Creates tuple automatically

至尊寶的傳說
TA貢獻1789條經驗 獲得超10個贊
如果操作失敗,為什么不拋出異常?就個人而言,我傾向于認為,如果您需要從一個函數中返回多個值,則應該重新考慮是否以正確的方式執行操作或使用對象。
但更直接的一點是,如果引發異常,則迫使他們處理問題。如果您嘗試返回一個指示失敗的值,則很可能有人無法檢查該值并最終導致一些潛在的難以調試的錯誤。

12345678_0001
TA貢獻1802條經驗 獲得超5個贊
為失敗而引發異常是進行操作的一種好方法,如果返回許多不同的值,則可以返回一個元組。對于您所引用的特定情況,我經常采用一種中間方法:成功時返回修改后的字符串,失敗時返回None。我有足夠的未重組的C程序員想要在失敗時返回指向char的NULL指針。
如果我正在編寫一個例程,將其用作更大的庫的一部分并由其他開發人員使用,則在失敗時會拋出異常。當我吃自己的狗食時,我可能會返回不同類型的食物,并測試返回的食物。
添加回答
舉報
0/150
提交
取消