[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