2012-09-18 9 views
5

Dada una tupla Python t = v1, v2, v3 hay una utilidad para descomprimir estos para que dada:Python 3: Desenrollar argumentos de tupla

def foo(v1,v2,v3): pass 

lugar de esto:

foo(t[0],t[1],t[2]) 

usted puede hacer esto:

foo(unpack(t)) 

Me gustaría saber si hay tal utilidad disponible para tuplas y/o listas.

Gracias sinceras.

Respuesta

14

Sip. Usted puede utilizar el operador de desembalaje ('*')

foo(*t) 

Tenga en cuenta que esto funciona si t es un list, tuple, o incluso un generador


Hay una manera análoga a pasar argumentos a funciones con palabras clave usando el operador ** en objetos de mapeo (típicamente diccionarios):

def foo(key=None,foo=None): 
    pass #... 

foo(**{key:1,foo:2}) 
1

Uso *args argumento que pasa:

foo(*t) 

Demostración:

>>> def foo(v1, v2, v3): 
...  print(v1, v2, v3) 
... 
>>> t = 1, 2, 3 
>>> foo(*t) 
1 2 3 
2

Unpack la lista de argumentos:

foo(*(v1, v2, v3)) 
Cuestiones relacionadas