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

Alessandro Dentella sandro a e-den.it
Lun 16 Mar 2009 15:30:03 CET


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

  Quale dovrebbe essere la corretta sintassi della seconda versione?
  Devo necessariamente usare qualcosa come:

     test(*a, **{'junk' :True} )       # funziona

  Avevo sempre interpretato **kw come: raccogli tutti i keyword args nel
  dizionario kw, ma se fosse cosė avrebbe dovuto funzionare anche nella riga
  sopra (junk=True)

  chiedo lumi...   
  grazie
  sandro


Maggiori informazioni sulla lista Python