On Mon, 16 Mar 2009 15:30:03 +0100, Alessandro Dentella <san...@e-den.it> wrote: > 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)
si, è uguale in ter 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 > > Quale dovrebbe essere la corretta sintassi della seconda versione? > Devo necessariamente usare qualcosa come: > > test(*a, **{'junk' :True} ) # funziona test(junk=True, *a) funziona come ti aspetti è vero che gli argomenti posizionali vanno dopo quelli nominali (quindi "test(foo=10, 1)" è un errore), ma gli argomenti * e ** vanno comunque alla fine. la sintassi completa (http://docs.python.org/reference/expressions.html#id9) rivela altre sorprese... -- Daniele _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python