[Python] Un generatore che non capisco

Pietro Battiston me a pietrobattiston.it
Ven 8 Nov 2013 13:43:04 CET


Il giorno ven, 08/11/2013 alle 11.47 +0000, Daniele Varrazzo ha scritto:
> On 2013-11-08 11:41, Pietro Battiston wrote:
> > Salve a tutti,
> >
> > ho scritto un generatore con poche righe di codice. Credo che il
> > contenuto sia inessenziale per la mia domanda, comunque lo trovate in
> > coda a questa email.
> 
> Non credo lo sia:
> 
>      In [1]: def ciao(list=[]):
>         ...:     return list
>         ...:
> 
>      In [2]: l = ciao()
> 
>      In [3]: l.append('wtf')
> 
>      In [4]: print ciao()
> 
> 
> secondo te cosa stampa il punto 4?


Noooo... confesso che questa non me l'aspettavo. Chiaro, non fa una
grinza. Ma non me l'aspettavo.

Ovviamente ora capisco che i due modi di chiamare il mio generatore non
erano in realtà uguali, perché una chiamava un ".next()" in più.

Giusto per curiosità, questo fatto che il parsing degli argomenti di
default non avvenga a runtime lo definireste un inconveniente tecnico
con cui si può sopravvivere tranquillamente (fare altrimenti
richiederebbe, in parole povere, uno scope in più?) o una feature?

Grazie mille!

Pietro



Maggiori informazioni sulla lista Python