[Python] *args vs. [1,2,3]

Manlio Perillo manlio_perillo a libero.it
Lun 16 Mar 2009 15:46:47 CET


Alessandro Dentella ha scritto:
> Ciao,
> 
>   ogni tanto scoprio mio malgrado cose elementari che non capisco... 
> 
>   ero convinto che nel passare argomenti ad una funzione, usare *list fosse
>   equivalente a passare i singoli componenti (ed analogamente per i
>   dizionari) ma vedo che non č cosė.
> 
>      def test(*args, **kw):
> 	 pass
> 
>      a = [1,2,3]
>      test(1,2,3, junk=True )    # funziona
>      test(*a, junk=True )       # solleva syntax error
> 

Stai facendo confusione su cosa faccia f(*a).
E' chiamato scompattamento della lista di argomenti:
http://docs.python.org/tutorial/controlflow.html#tut-unpacking-arguments

def f(a, b, c):
     print a, b, c

a = [1, 2, 3]
f(*a)


Lo stesso vale per i dizionari.


Ciao  Manlio


Maggiori informazioni sulla lista Python