如何在一个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]

返回一个列表。

[]如果你用这个括起来,返回值将是一个列表而不是一个元组。

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

result = test_list()

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