Как вернуть несколько возвращаемых значений в функции 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'>
Copied title and URL