В языке 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'>