Ich möchte zwei Werte von einer Funktion in zwei separaten Variablen zurückgeben. Beispielsweise:
def select_choice():
loop = 1
row = 0
while loop == 1:
print('''Choose from the following options?:
1. Row 1
2. Row 2
3. Row 3''')
row = int(input("Which row would you like to move the card from?: "))
if row == 1:
i = 2
card = list_a[-1]
elif row == 2:
i = 1
card = list_b[-1]
elif row == 3:
i = 0
card = list_c[-1]
return i
return card
Und ich möchte diese Werte separat verwenden können. Wenn ich versucht habe return i, card
, es zu verwenden , wird a zurückgegeben tuple
und dies ist nicht das, was ich will.
else: continue
vor der Rückkehr Aussagen habenAntworten:
Sie können nicht zwei Werte zurückgeben, aber Sie können a
tuple
oder a zurückgebenlist
und nach dem Aufruf entpacken:Auf der Leitung
return i, card
i, card
mittels eines Tupels zu schaffen. Sie können auch Klammern wie verwendenreturn (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 Leitungmy_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
gibtUnmarshalResult
das Marshmallow-Framework in der Methode a zurück, was a istnamedtuple
. So können Sie tun:oder
In anderen Fällen können Sie a
dict
von Ihrer Funktion zurückgeben:Möglicherweise möchten Sie jedoch eine Instanz einer Dienstprogrammklasse zurückgeben, die Ihre Daten umschließt:
quelle
Wie würden Sie erwarten, dass es auf der Anruferseite aussieht? Sie können nicht schreiben,
a = select_choice(); b = select_choice()
da dies die Funktion zweimal aufrufen würde.Werte werden nicht "in Variablen" zurückgegeben. So funktioniert Python nicht. Eine Funktion gibt Werte (Objekte) zurück. Eine Variable ist nur ein Name für einen Wert in einem bestimmten Kontext. Wenn Sie eine Funktion aufrufen und den Rückgabewert irgendwo zuweisen, geben Sie dem empfangenen Wert im aufrufenden Kontext einen Namen. Die Funktion setzt den Wert nicht "in eine Variable" für Sie, sondern die Zuweisung (egal, dass die Variable kein "Speicher" für den Wert ist, sondern nur ein Name).
Eigentlich ist es genau das, was Sie wollen. Alles was Sie tun müssen, ist das
tuple
wieder auseinander zu nehmen.Also schnapp dir einfach die Werte aus dem
tuple
.Der einfachste Weg, dies zu tun, ist das Auspacken:
quelle
Ich denke du, was du willst, ist ein Tupel. Wenn Sie verwenden
return (i, card)
, können Sie diese beiden Ergebnisse erhalten, indem Sie:quelle
Jetzt können Sie mit Ihrem Tupel alles machen, was Sie wollen.
quelle
quelle
Und dies ist eine Alternative. Wenn Sie als Liste zurückkehren, ist es einfach, die Werte zu erhalten.
quelle
Sie können dies versuchen
quelle
Sie können auch mehr als einen Wert mithilfe der Liste zurückgeben. Überprüfen Sie den folgenden Code
quelle