Как да върнем няколко стойности за връщане във функция на 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