[Python] Un generatore che non capisco

Pietro Battiston me a pietrobattiston.it
Ven 8 Nov 2013 13:54:44 CET


Il giorno ven, 08/11/2013 alle 13.43 +0100, Pietro Battiston ha scritto:
> 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?
> 

N.B: mi sono poi reso conto che il mio problema non è tanto il parsing
degli argomenti di default ma un molto più stupido

gr = dict(links)

che copia dict ma _non_, ovviamente, le liste che contiene.

Però mi la curiosità...

Pietro



Maggiori informazioni sulla lista Python