在 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'>