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