Jak zwrócić wiele wartości zwrotnych w funkcji Pythona

Biznes

W C, zwracanie wielu wartości z funkcji jest dość żmudne, ale w Pythonie jest to bardzo łatwe do zrobienia.

Zwrot oddzielony przecinkami

W Pythonie możesz po prostu zwrócić listę oddzielonych przecinkami łańcuchów lub liczb.

Jako przykład, zdefiniuj funkcję, która zwraca tylko ciąg znaków i liczbę, jak pokazano poniżej, z każdym oddzielonym przecinkiem po zwrocie.

def test():
    return 'abc', 100

W Pythonie wartości oddzielone przecinkami są traktowane jako tuple bez nawiasów, z wyjątkiem sytuacji, gdy jest to konieczne ze względów składniowych. Dlatego funkcja w powyższym przykładzie zwróci tuple z każdą wartością jako elementem.

To przecinek tworzy tuple, a nie nawiasy okrągłe. Nawiasy okrągłe mogą być pominięte, z wyjątkiem pustych krotek lub gdy jest to konieczne dla uniknięcia niejednoznaczności składni.
Built-in Types — Python 3.10.0 Documentation

Typem zwracanej wartości jest tuple.

result = test()

print(result)
print(type(result))
# ('abc', 100)
# <class 'tuple'>

Każdy element będzie miał typ określony przez funkcję.

print(result[0])
print(type(result[0]))
# abc
# <class 'str'>

print(result[1])
print(type(result[1]))
# 100
# <class 'int'>

Błąd, jeśli określisz indeks, który przekracza liczbę zdefiniowanych wartości zwracanych.

# print(result[2])
# IndexError: tuple index out of range

Może być rozpakowany i wiele wartości zwracanych może być przypisanych do oddzielnych zmiennych.

a, b = test()

print(a)
# abc

print(b)
# 100

To samo dotyczy sytuacji, gdy chcemy określić trzy lub więcej wartości zwracanych zamiast tylko dwóch.

def test2():
    return 'abc', 100, [0, 1, 2]

a, b, c = test2()

print(a)
# abc

print(b)
# 100

print(c)
# [0, 1, 2]

Zwraca listę.

[]Jeśli otoczysz go tym, wartość zwracana będzie listą zamiast tuple.

def test_list():
    return ['abc', 100]

result = test_list()

print(result)
print(type(result))
# ['abc', 100]
# <class 'list'>