2012-12-15 15 views

risposta

9

Sì, utilizzare foo(*i):

>>> foo(*i) 
6 

È inoltre possibile utilizzare * nella definizione di funzione: def foo(*vargs) mette tutti gli argomenti non di parole chiave in una tupla chiamato vargs. . e l'uso di **, per esempio, def foo(**kargs), metterà tutti gli argomenti delle parole chiave in un dizionario chiamato kargs:

>>> def foo(*vargs, **kargs): 
     print vargs 
     print kargs 

>>> foo(1, 2, 3, a="A", b="B") 
(1, 2, 3) 
{'a': 'A', 'b': 'B'} 
3

Sì, Python supporta che:

foo(*i) 

consultare la documentazione Unpacking Argument Lists. Funziona con qualsiasi cosa iterabile. Con due stelle ** funziona per dicts e argomenti con nome.

def bar(a, b, c): 
    return a * b * c 
j = {'a': 5, 'b': 3, 'c': 2} 

bar(**j) 
4

Si chiama argument unpacking e c'è un operatore per esso.

foo(*i) 

A proposito, funziona con qualsiasi iterabile, non solo con le liste.

+0

+1 per aver lasciato cadere il nome del gioco. in realtà questo è ciò che aiuta a google questa cosa per qualsiasi lingua. Molte grazie. –

Problemi correlati