在寫腳本的時候,因為自己沒有充分解耦好每個函數的功能,出現了某個函數要一次返回多個結果的情況。那今天就來說下如果出現了return中需要返回多個結果時要怎么解決吧:
1、封裝成對象返回:把多個結果封裝成一個對象,直接返回該對象即可。示例:

1 class Result: 2 def __init__(self, result1, result2, result3, result4): 3 self.result1 = result1 4 self.result2 = result2 5 self.result3 = result3 6 self.result4 = result4 7 8 9 def return_results(num1, num2): 10 result1 = num1 + num2 11 result2 = num1 - num2 12 result3 = num1 * num2 13 result4 = num1 / num2 14 # 封裝成result對象 15 result = Result(result1, result2, result3, result4) 16 return result 17 18 19 if __name__ == '__main__': 20 result = return_results(13, 4) 21 print(result.result1) 22 print(result.result2) 23 print(result.result3) 24 print(result.result4)
2、返回元組:直接在return后寫返回的內容,最后拿到的就是一個元組。返回起來方便是真方便,但是覺得代碼就不太美觀了;而且后續操作直接用序號取值,個人感覺代碼可讀性也會下降,示例:

1 def return_results(num1, num2): 2 result1 = num1 + num2 3 result2 = num1 - num2 4 result3 = num1 * num2 5 result4 = num1 / num2 6 return result1, result2, result3, result4 7 8 9 if __name__ == '__main__': 10 results = return_results(13, 4) 11 print(type(results)) 12 for result in results: 13 print(result)
3、返回列表:以列表的形式返回結果,比起元組,直接在返回的內容前后加上[];不過列表后續可以繼續修改返回的結果,元組則不可以,示例:

1 def return_results(num1, num2): 2 result1 = num1 + num2 3 result2 = num1 - num2 4 result3 = num1 * num2 5 result4 = num1 / num2 6 return [result1, result2, result3, result4] 7 8 9 if __name__ == '__main__': 10 results = return_results(13, 4) 11 print(type(results)) 12 for result in results: 13 print(result)
4、返回字典:把多個結果封裝成字典返回,示例:

1 def return_results(num1, num2): 2 result1 = num1 + num2 3 result2 = num1 - num2 4 result3 = num1 * num2 5 result4 = num1 / num2 6 7 d = dict() 8 d['result1'] = result1 9 d['result2'] = result2 10 d['result3'] = result3 11 d['result4'] = result4 12 return d 13 14 15 if __name__ == '__main__': 16 result = return_results(13, 4) 17 print(type(result)) 18 for key in result.keys(): 19 print(result[key])