[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