Domanda

dire Let ho una definizione di metodo come questo:

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

Poi, ho una variabile e una tupla come questo:

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

C'è un modo posso passare esplodere la tupla in modo che possa passare i suoi membri come parametri? Qualcosa di simile (anche se so che questo non funzionerà come l'intera tupla è considerato il secondo parametro):

myMethod(myVariable, myTuple)

mi piacerebbe evitare di riferimento a ciascun membro tupla individualmente se possibile ...

È stato utile?

Soluzione

Stai cercando il argomento disimballaggio * operator:

myMethod(myVariable, *myTuple)

Altri suggerimenti

Python documentazione :

  

La situazione inversa si verifica quando il   argomenti sono già in un elenco o   tuple, ma devono essere decompressi per un   funzione di chiamata richiede separato   argomenti posizionali. Per esempio,   incorporato range) aspetta funzionali (   Start e Stop argomenti separati. Se   essi non sono disponibili separatamente,   scrivere la chiamata di funzione con la   * -Operator per decomprimere gli argomenti di una lista o tupla:

>>> 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]
  

Allo stesso modo, può dizionari   fornire argomenti a parola chiave con la   ** - operatore:

>>> 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 !
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top