[PIPython] generators
Nicola Paolucci
nick
Ven 19 Nov 2004 15:16:44 CET
ciao !
> mi sa che non ho capito bene come si usano i generators :(
Mi sa anche a me, ;).
> def id(n=0):
> i = n
> while 1:
> i += 1
> yield i
>
> for j in range(10):
> print id().next()
>
> non dovrebbe stamparmi i numeri da 1 a 10 ? Invece mi stampa tutti "1" ..
> Qualcuno mi puo' illuminare ? Uso python 2.3 (sia sotto linux che sotto
> win, stesso comportamento)
La ragione e' che re-istanzi il generatore ad ogni iterazione del for.
Credo che quello che tu voglia fare sia qualcosa come:
def id (n=0):
i = n
while 1:
i = i + 1
yield i
#istanziamo il generatore
idgen = id()
for j in range(10):
#usiamo il generatore instanziato per generare i valori.
print idgen.next()
ciao,
Nick
More information about the Python
mailing list