Sie können nicht zwei Werte zurückgeben, aber Sie können a tuple
oder a zurückgeben list
und nach dem Aufruf entpacken:
def select_choice():
...
return i, card # or [i, card]
my_i, my_card = select_choice()
Auf der Leitung return i, card
i, card
mittels eines Tupels zu schaffen. Sie können auch Klammern wie verwenden return (i, card)
, aber Tupel werden durch Komma erstellt, sodass Parens nicht obligatorisch sind. Sie können jedoch Parens verwenden, um Ihren Code besser lesbar zu machen oder das Tupel auf mehrere Zeilen aufzuteilen. Gleiches gilt für die Leitung my_i, my_card = select_choice()
.
Wenn Sie mehr als zwei Werte zurückgeben möchten, sollten Sie ein benanntes Tupel verwenden . Dadurch kann der Aufrufer der Funktion auf Felder des zurückgegebenen Werts nach Namen zugreifen, was besser lesbar ist. Sie können weiterhin über den Index auf Elemente des Tupels zugreifen. Zum Beispiel Schema.loads
gibt UnmarshalResult
das Marshmallow-Framework in der Methode a zurück, was a ist namedtuple
. So können Sie tun:
data, errors = MySchema.loads(request.json())
if errors:
...
oder
result = MySchema.loads(request.json())
if result.errors:
...
else:
# use `result.data`
In anderen Fällen können Sie a dict
von Ihrer Funktion zurückgeben:
def select_choice():
...
return {'i': i, 'card': card, 'other_field': other_field, ...}
Möglicherweise möchten Sie jedoch eine Instanz einer Dienstprogrammklasse zurückgeben, die Ihre Daten umschließt:
class ChoiceData():
def __init__(self, i, card, other_field, ...):
# you can put here some validation logic
self.i = i
self.card = card
self.other_field = other_field
...
def select_choice():
...
return ChoiceData(i, card, other_field, ...)
choice_data = select_choice()
print(choice_data.i, choice_data.card)