2012-07-12 12 views
6

Estoy tratando de usar la función next en un iterador, sin embargo, tengo una variable local en el mismo ámbito que también se llama next. La solución obvia es cambiar el nombre de la variable local, sin embargo, soy bastante nuevo en Python, por lo que tengo curiosidad por saber cómo prefijar la función next para lograr el comportamiento deseado.Alcance de next() en Python

El código que estoy usando se ve algo como esto:

for prev, curr, next in neighborhood(list): 
    if (prev == desired_value): 
     print(prev+" "+next) 
     desired_value = next(value_iterator) 

Tenga en cuenta que estoy usando Python 3.2.

Respuesta

10

Puede usar __builtins__.next para hacer referencia a la función incorporada next.

for prev, curr, next in neighborhood(list): 
    if (prev == desired_value): 
     print(prev+" "+next) 
     desired_value = __builtins__.next(value_iterator) 

Sin embargo, como usted señala, la solución obvia es utilizar un nombre diferente para su variable.

+0

Gracias, eso es lo que estaba buscando. – astay13

6

Puede llamar directamente al método next() del iterador. Sin embargo, se pierde la capacidad de suprimir StopIteration al final de la iteración a favor de ver un valor predeterminado.

desired_value = value_iterator.next() 

Tenga en cuenta que en Python 3, este método ha sido renombrada __next__().

2

Antes de asignar algo a otro, usar algo como:

real_next = next 
Cuestiones relacionadas