Quindi ho una funzione di generatore, che assomiglia a questo.Generatori e loop in Python
def generator():
while True:
for x in range(3):
for j in range(5):
yield x
Quando si carica su questa funzione e lo chiamo "next" un mucchio di volte, mi aspetto che producesse valori
0 0 0 0 0 1 1 1 1 1 2 2 2 2 2 0 0 0 0 0 ...
Ma invece solo i rendimenti 0 per tutto il tempo. Perché?
>>> execfile("test.py")
>>> generator
<function generator at 0x10b6121b8>
>>> generator().next()
0
>>> generator().next()
0
>>> generator().next()
0
>>> generator().next()
0
>>> generator().next()
0
>>> generator().next()
0
>>> generator().next()
0
Non riesco a capire perché questo è così speciale. Se riacquistassi qualche lezione, nessuno sarebbe sorpreso quando qualche tipo di valore iniziale non viene aggiornato! Per esempio. caricare 10 volte in un file e fare 'next()' e 'print' non sarebbe così spettacolare da richiedere 14 upvotes e 2 preferiti ... – PascalVKooten
Risposta breve, ogni chiamata' generator() 'restituisce un nuovo oggetto generatore che inizia al suo inizio Prova 'gen = generator()', quindi 'gen.next()', 'gen.next()', ecc. – martineau