Python如何返回多個值?


Python函式可以返回多個值。這些值可以直接儲存在變數中。函式不受限於返回一個變數,它可以返回零個、一個、兩個或多個值。

這是Python的一個預設特性,可以返回多個值/變數,而許多其他程式語言(如C++或Java)則沒有這個特性。

為了從函式中返回多個值,我們可以根據需要返回元組、列表或字典物件。

方法一:使用元組

def func(x):
   y0 = x+ 1
   y1 = x * 3
   y2 = y0 ** 3
   return (y0, y1, y2)

然而,隨著返回值數量的增加,上述程式會變得複雜。如果我們想返回六個或七個值呢?當然,我們可以繼續將它們組合成元組,但這很容易忘記哪個值對應哪個位置,並且在需要接收它們的地方解包也會顯得有點混亂。

方法二:使用字典

另一個更好的解決方案是使用字典。

def func(x):
   y0 = x+ 1
   y1 = x * 3
   y2 = y0 ** 3
   return {'y0': y0, 'y1': y1, 'y2': y2}

現在,我們有了一種機制,可以透過它來訪問返回物件中的特定成員。

例如:

result[‘y1’]

方法三:使用類

另一個選擇是使用類,我們可以返回一個專門的結構。

class ReturnValue(obj):
   def __init__(self, y0, y1, y2):
      self.y0 = y0
      self.y1 = y1
      self.y2 = y2

def g(x):
   y0 = x + 1
   y1 = x * 3
   y2 = y0 ** 3
   return ReturnValue (y0, y1, y2)

方法四:使用列表

另一種方法是使用列表。

def func(x):
   result = [x + 1]
   result.append(x * 3)
   result.append(y0 ** 3)
   return result

方法五:使用生成器

如果我們需要返回大量的值,那麼使用序列可能會消耗大量的系統資源,這時我們可以選擇使用`yield`關鍵字來逐個返回多個值。

def func(x):
   y0 = x + 1
   yield y0
   yield x * 3
   yield y0 ** 3

哪種方法最適合從函式中返回多個值?

這完全取決於你的喜好或需求,選擇你更喜歡的方法。你可以選擇字典方法,因為它涉及較少的設定工作。或者你可以選擇類方法,這可以幫助你避免混淆字典的含義。或者你可以選擇生成器,一次返回一個值。

更新於:2019年7月30日

7K+ 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告