從 Python 函式中返回多個值

Manav Narula 2023年10月10日
  1. 在 Python 中使用元組從函式中返回多個值
  2. 使用列表從 Python 函式中返回多個值
  3. 在 Python 中使用字典從函式中返回多個值
  4. 使用一個類從 Python 中的函式中返回多個值
  5. 在 Python 中使用 dataclass 從一個函式中返回多個值
從 Python 函式中返回多個值

函式是任何程式語言的重要組成部分。函式是一個程式碼塊,它可以被呼叫來執行程式設計中的一個特定操作。通常,一個函式用來返回一個值。這個值可以是一個數字,一個字串,或者任何其他資料型別。

在本教程中,我們將討論建立一個返回多個值的函式的不同方法。我們將從使用者定義的函式中返回不同的資料物件,如列表、字典和其他物件來實現這一目的。

在 Python 中使用元組從函式中返回多個值

如果我們從函式中返回的值用逗號隔開,它們被認為是一個元組。元組通常用括號括起來。在下面的程式碼中,我們將從 Python 函式中返回一個元組。

def return_multi(a):
    b = a + 1
    c = a + 2
    return b, c


x = return_multi(5)
print(x, type(x))

輸出:

(6, 7) <class 'tuple'>

使用列表從 Python 函式中返回多個值

Python 列表用於在一個共同的名稱下和特定的位置儲存不同的專案。函式也可以在一個列表中返回多個值,如下圖所示。

def return_multi(a):
    b = a + 1
    c = a + 2
    return [b, c]


x = return_multi(5)
print(x, type(x))

輸出:

[6, 7] <class 'list'>

在 Python 中使用字典從函式中返回多個值

在 Python 中,字典是用來儲存鍵值對的。我們可以通過從一個函式中返回一個鍵值不同的字典來獲得更有條理的最終輸出。請看下面的例子。

def return_multi(a):
    b = a + 1
    c = a + 2
    return {"b": b, "c": c}


x = return_multi(5)
print(x, type(x))

輸出:

{'b': 6, 'c': 7} <class 'dict'>

使用一個類從 Python 中的函式中返回多個值

類包含不同的資料成員和函式,並允許我們建立物件來訪問這些成員。我們可以根據類的結構和其資料成員,返回這種使用者定義類的物件。例如:

class return_values:
    def __init__(self, a, b):
        self.a = a
        self.b = b


def return_multi(a):
    b = a + 1
    c = a + 2
    t = return_values(b, c)
    return t


x = return_multi(5)
print(x.a, x.b, type(x))

輸出:

6 7 <class '__main__.return_values'>

在 Python 中使用 dataclass 從一個函式中返回多個值

dataclass 是 Python v3.7 及以上版本中新增的一個有趣的特性。它們類似於傳統的類,但主要用於儲存資料,而且它們的所有基本功能都已經實現。@dataclass 裝飾器和 dataclass 模組被用來建立這樣的物件。在下面的程式碼中,我們從一個函式中返回一個 dataclass

from dataclasses import dataclass


@dataclass
class return_values:
    a: int
    b: int


def return_multi(a):
    b = a + 1
    c = a + 2
    t = return_values(b, c)
    return t


x = return_multi(5)
print(x.a, x.b, type(x))

輸出:

6 7 <class '__main__.return_values'>
作者: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

相關文章 - Python Function