在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]
返回一个列表。
[]
如果你用这个括起来,返回值将是一个列表而不是一个元组。
def test_list(): return ['abc', 100] result = test_list() print(result) print(type(result)) # ['abc', 100] # <class 'list'>