Sie müssen diese Argumente beim Aufruf other_function
entpacken.
other_function(*do_something(lis))
auf der Fehlermeldung Auf der Grundlage, es sieht aus wie Ihre andere Funktion definiert ist (und soll so definiert werden)
def other_function(arg1, arg2):
pass
Also, wenn Sie von do_something
zurückkehren, sind Sie ein Tupel tatsächlich Rückkehr enthält (lis[0], lis[1])
. Also, als Sie ursprünglich other_function
anriefen, übergaben Sie ein einzelnes Tupel, als Ihr other_function
immer noch ein zweites Argument erwartete.
Sie können dies sehen, wenn Sie es ein wenig weiter brechen. Unten finden Sie eine Aufschlüsselung der ist, wie die Erträge aus, wenn anders gehandhabt, eine Reproduktion Ihrer Fehler und eine Demo der Lösung:
in Zurückkehren zu einer einzigen Variable wird ein Tupel des Ergebnisses zurück:
>>> def foo():
... lis = range(10)
... return lis[1], lis[2]
...
>>> result = foo()
>>> result
(1, 2)
Rückkehr in zwei Variablen, entpackt in zu jeder var:
>>> res1, res2 = foo()
>>> res1
1
>>> res2
2
der Versuch, mit result
zu nennen other_function, die jetzt nur noch ein Tupel von Ihr Ergebnis hält:
>>> def other_function(arg1, arg2):
... print(arg1, arg2)
...
>>> other_function(result)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: other_function() missing 1 required positional argument: 'arg2'
Aufruf other_function mit res1
, res2
, die jeden Wert der Rückkehr aus foo
hält:
>>> other_function(res1, res2)
1 2
Mit result
(Ihr Tupel Ergebnis) und in der Funktionsaufruf other_function
Auspacken:
>>> other_function(*result)
1 2
zeigen 'andere_funktion' Funktionsdeklaration – RomanPerekhrest