Wie man mehrere Rückgabewerte in einer Python-Funktion zurückgibt

Geschäft

In C ist es ziemlich mühsam, mehrere Rückgabewerte aus einer Funktion zurückzugeben, aber in Python ist es sehr einfach zu machen.

Rückgabe durch Komma getrennt

In Python können Sie einfach eine durch Kommata getrennte Liste von Zeichenketten oder Zahlen zurückgeben.

Definieren Sie zum Beispiel eine Funktion, die nur eine Zeichenkette und eine Zahl zurückgibt, wie unten gezeigt, wobei beide durch ein Komma nach der Rückgabe getrennt sind.

def test():
    return 'abc', 100

In Python werden kommagetrennte Werte als Tupel ohne Klammern betrachtet, es sei denn, dies ist syntaktisch notwendig. Daher wird die Funktion im obigen Beispiel ein Tupel mit jedem Wert als Element zurückgeben.

Es ist das Komma, das das Tupel bildet, nicht die runden Klammern. Runde Klammern können weggelassen werden, es sei denn, es handelt sich um leere Tupel oder es ist notwendig, um syntaktische Mehrdeutigkeit zu vermeiden.
Built-in Types — Python 3.10.0 Documentation

Der Typ des Rückgabewerts ist ein Tupel.

result = test()

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

Jedes Element ist von dem durch die Funktion definierten Typ.

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

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

Fehler, wenn Sie einen Index angeben, der die Anzahl der von Ihnen definierten Rückgabewerte überschreitet.

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

Es kann ausgepackt werden und mehrere Rückgabewerte können separaten Variablen zugewiesen werden.

a, b = test()

print(a)
# abc

print(b)
# 100

Das Gleiche gilt, wenn Sie drei oder mehr Rückgabewerte anstelle von nur zwei angeben wollen.

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

a, b, c = test2()

print(a)
# abc

print(b)
# 100

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

Gibt eine Liste zurück.

[]Wenn Sie es mit diesem einschließen, ist der Rückgabewert eine Liste anstelle eines Tupels.

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

result = test_list()

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