В езика 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'>