如何在 Python 函數中返回多個返回值

商業

在 C 中,從一個函數中返回多個返回值非常繁瑣,但在 Python 中,這很容易做到。

返回以逗號分隔

在 Python 中,您可以簡單地返回以逗號分隔的字符串或數字列表。

例如,定義一個只返回一個字符串和一個數字的函數,如下所示,每個字符串和數字在返回後用逗號分隔。

def test():
    return 'abc', 100

在 Python 中,逗號分隔的值被視為沒有括號的元組,除非在語法上有必要。因此,上面示例中的函數將返回一個元組,每個值作為一個元素。

創建元組的是逗號,而不是圓括號。圓括號可以省略,除非在空元組的情況下或在必要時避免語法歧義。
Built-in Types — Python 3.10.0 Documentation

返回值的類型是元組。

result = test()

print(result)
print(type(result))
# ('abc', 100)
# <class 'tuple'>

每個元素都屬於函數定義的類型。

print(result[0])
print(type(result[0]))
# abc
# <class 'str'>

print(result[1])
print(type(result[1]))
# 100
# <class 'int'>

如果您指定的索引超過您定義的返回值數量,則會出錯。

# print(result[2])
# IndexError: tuple index out of range

它可以解包並且可以將多個返回值分配給單獨的變量。

a, b = test()

print(a)
# abc

print(b)
# 100

如果您想指定三個或更多返回值而不是兩個,這同樣適用。

def test2():
    return 'abc', 100, [0, 1, 2]

a, b, c = test2()

print(a)
# abc

print(b)
# 100

print(c)
# [0, 1, 2]

返回一個列表。

[]如果你用 this 把它括起來,返回值將是一個列表而不是一個元組。

def test_list():
    return ['abc', 100]

result = test_list()

print(result)
print(type(result))
# ['abc', 100]
# <class 'list'>