Wie kann ich ein Tupel explodieren, damit es als Parameterliste übergeben werden kann?

Angenommen, ich habe eine Methodendefinition wie folgt:

def myMethod(a, b, c, d, e) 

Dann habe ich eine Variable und ein Tupel wie folgt:

 myVariable = 1 myTuple = (2, 3, 4, 5) 

Gibt es einen Weg, den ich passieren kann, explodiere das Tupel, damit ich seine Mitglieder als Parameter übergeben kann? Etwas wie dieses (obwohl ich weiß, dass dies nicht funktioniert, da das gesamte Tupel als der zweite Parameter gilt):

 myMethod(myVariable, myTuple) 

Ich würde gerne vermeiden, jedes Tupel-Mitglied einzeln zu verweisen, wenn möglich …

  • Ist es möglich, ein Tupel in Python auszupacken, ohne unerwünschte Variablen zu erzeugen?
  • Idiomatischer Weg zum Auspacken der variablen Längenliste der maximalen Größe n
  • Wie korrigieren Sie vektorisierte Funktionseinträge in Python 2
  • Ist es möglich, ein Tupel auszupacken, ohne Variablen zu verwenden?
  • Auspacken eines Python-Tupels von links nach rechts?
  • Auspacken eines 1-Tupels in einer Liste der Länge 1
  • 2 Solutions collect form web for “Wie kann ich ein Tupel explodieren, damit es als Parameterliste übergeben werden kann?”

    Sie suchen nach dem Argument Auspacken Operator * :

     myMethod(myVariable, *myTuple) 

    Aus der Python-Dokumentation :

    Die umgekehrte Situation tritt auf, wenn die Argumente bereits in einer Liste oder einem Tupel liegen, aber für einen Funktionsaufruf, der separate Positionsargumente erfordert, ausgepackt werden müssen. Beispielsweise erwartet die integrierte range () – Funktion separate Start- und Stop-Argumente. Wenn sie nicht separat verfügbar sind, schreiben Sie den Funktionsaufruf mit dem * -operator, um die Argumente aus einer Liste oder einem Tupel auszupacken:

     >>> range(3, 6) # normal call with separate arguments [3, 4, 5] >>> args = [3, 6] >>> range(*args) # call with arguments unpacked from a list [3, 4, 5] 

    In der gleichen Weise können Wörterbücher Keyword-Argumente mit dem **-Operator liefern:

     >>> def parrot(voltage, state='a stiff', action='voom'): ... print "-- This parrot wouldn't", action, ... print "if you put", voltage, "volts through it.", ... print "E's", state, "!" ... >>> d = {"voltage": "four million", "state": "bleedin' demised", "action": "VOOM"} >>> parrot(**d) -- This parrot wouldn't VOOM if you put four million volts through it. E's bleedin' demised ! 
    Python ist die beste Programmiersprache der Welt.