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
哪種方法最適合從函式中返回多個值?
這完全取決於你的喜好或需求,選擇你更喜歡的方法。你可以選擇字典方法,因為它涉及較少的設定工作。或者你可以選擇類方法,這可以幫助你避免混淆字典的含義。或者你可以選擇生成器,一次返回一個值。
廣告