Sé que me debe estar perdiendo algo simple, pero no lo estoy viendo.Expresión del generador frente al rendimiento: ¿Por qué no funciona 'next()'?
Si tengo una expresión generadora de esta manera:
>>> serializer=(sn for sn in xrange(0,sys.maxint))
que puede generar, con facilidad, números enteros individuales como este:
>>> serializer.next()
0
>>> serializer.next()
1
>>> serializer.next()
2
Si escribo un generador de la siguiente manera:
>>> def ser():
... for sn in xrange(0,100000):
... yield sn
No es bueno:
>>> ser().next()
0
>>> ser().next()
0
>>> ser().next()
0
??? Qué me estoy perdiendo ???
Thx! Sabía que tenía que ser simple ... – dawg
no hay problema. definitivamente no es obvio, ya que el otro tipo importante de funciones que hacen esto (decoradores) tienen un 'envoltorio de retorno' explícito en ellos, que supongo está implícita/mágicamente creado por la declaración' yield': P –