[Python] Domande varie

Alessandro Dentella sandro a e-den.it
Lun 20 Ott 2008 16:37:01 CEST


On Mon, Oct 20, 2008 at 03:53:07PM +0200, Valerio Pachera wrote:
> Ciao ragazzi, sto leggendo del codice di alcuni programmi e vi sono
> delle cose che non mi sono chiare.
> 
> def __init__(self, **kw):
>   super(Document, self).__init__(**kw)
> 
> Correggetemi se sbaglio:
> Qua viene definito il costruttore che richiama il costruttore della
> classe genitore per estenderlo.
> 
> Cosa sono gli asterischi????
> kv ha un significato particolare?


kw come keywords, spesso trovi anche kwargs, puoi usare il nome che più ti
aggrada.

**kw nella definizione di funzione indica che ogni keyword argument non
  precedentemente definito verrà messo in un dizionario kw.


In [1]: def abc(**kw):
   ...:        print kw
   ...: 

In [2]: abc(uno=1, due=2)
{'due': 2, 'uno': 1}


quindi kw a questo punto è un dizionario, se vuoi chiamare il costruttore di
Document devi però passargli uno=1, due=2... '**' fa esattamente questo.

Esiste anche l'omologo per gli argomenti ed è l'asterisco semplice: '*'.

In [3]: def abc(*args):
   print args
   ...:    

In [5]: abc(1,2,'mno')
(1, 2, 'mno')


*:-)


Maggiori informazioni sulla lista Python