Gibt es eine Möglichkeit, ein Python-Tupel zu einer Funktion zu erweitern - als tatsächliche Parameter?
Zum Beispiel macht hier expand()
die Magie:
some_tuple = (1, "foo", "bar")
def myfun(number, str1, str2):
return (number * 2, str1 + str2, str2 + str1)
myfun(expand(some_tuple)) # (2, "foobar", "barfoo")
Ich weiß, man könnte definieren myfun
als myfun((a, b, c))
, aber natürlich kann es Legacy-Code geben. Vielen Dank
python
tuples
parameter-passing
AkiRoss
quelle
quelle
Beachten Sie, dass Sie auch einen Teil der Argumentliste erweitern können:
quelle
some_func(*tuple_of_stuff, another_argument)
def func(a,b,c,d): print(a,b,c,d)
mitargs = ('fee', 'fi', 'fo'); func(*args, 'fum')
Schauen Sie sich das Python-Tutorial in den Abschnitten 4.7.3 und 4.7.4 an. Es geht darum, Tupel als Argumente zu übergeben.
Ich würde auch in Betracht ziehen, benannte Parameter zu verwenden (und ein Wörterbuch zu übergeben), anstatt ein Tupel zu verwenden und eine Sequenz zu übergeben. Ich finde die Verwendung von Positionsargumenten eine schlechte Praxis, wenn die Positionen nicht intuitiv sind oder mehrere Parameter vorhanden sind.
quelle
Dies ist die funktionale Programmiermethode. Es hebt die Tupel-Erweiterungsfunktion aus dem Syntaxzucker heraus:
apply_tuple = lambda f, t: f(*t)
Anwendungsbeispiel:
Curry- Neudefinition
apply_tuple
spartpartial
auf lange Sicht viele Anrufe.quelle
lambda f, t: f(*t)
verwendet keine Module von Drittanbietern und ich bin ein Python-Anfänger und dies ist hilfreich für mich. Dies ist ein rein funktionaler Ansatz. Wenn Sie diesen Stil nicht verwenden, ist diese Antwort nichts für Sie.starmap
docs.python.org/3.7/library/itertools.html#itertools.starmap