Skip to content

Wie man mehrere Werte aus einer Funktion in Python zurückgibt

Python

Dieser Artikel genau, wie Sie mehrere Werte von einer Funktion in Python zurückgeben.

  • Geben Sie mehrere Werte mit Kommas zurück
  • Rückgabeliste

Siehe den following Artikel für die Grundlagen von Funktionen in Python.

Geben Sie mehrere Werte mit Kommas zurück

In Python können Sie mehrere Werte zurückgeben, aber Sie einfach durch Kommas getrennt zurückgeben.

Definieren Sie als Beispiel eine Funktion, die eine Zeichenfolge und eine ganze Zahl wie folgt zurückgibt:

def test():
    return 'abc', 100

In Python Werden durch Kommas getrennte Werte als Tupel ohne Klammern betrachtet, sofern dies nicht durch die Syntax erforderlich ist. Aus diesem Grund gibt die Funktion im Beispielbeispiel ein Tupel mit jedem Wert als Element zurück.

Beachten Sie, dass es eigentlich das Komma ist, das ein Tupel ergibt, nicht die Klammern. Die Klammern sind optional, außer im leeren Tupelfall oder wenn sie benötigt werden, um syntaktische Mehrdeutigkeit zu vermeiden.
Eingebaute Typen – Tupel – Dokumentation zu Python 3.7.4

result = test()

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

Jedes Element hat einen in der Funktion definierten Typ.

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

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

Natürlich führt die Angabe eines Index, der die Anzahl der angelegten Rückgabewerte überschreitet, zu einem Fehler.

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

Sie können mehrere Rückgabewerte entpacken und verschiedene Variablen zuweisen.

a, b = test()

print(a)
# abc

print(b)
# 100

Gleiches gilt für drei oder mehr Rückgabewerte.

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

a, b, c = test2()

print(a)
# abc

print(b)
# 100

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

Rückgabeliste

Die Verwendung von [] gibt eine Liste anstelle eines Tupels zurück.

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

result = test_list()

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