2012-07-12 22 views
6

Próbuję użyć funkcji next w iteratorze, jednak mam zmienną lokalną w tym samym zakresie, która ma również nazwę next. Oczywistym rozwiązaniem jest zmiana nazwy zmiennej lokalnej, jednak jestem całkiem nowy w Pythonie, więc jestem ciekawa, jak przedefiniować funkcję , aby osiągnąć pożądane zachowanie.Zakres następnego() w języku Python

Kod używam wygląda mniej więcej tak:

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

Zauważ, że używam Python 3.2.

Odpowiedz

10

Możesz użyć __builtins__.next, aby zapoznać się z wbudowaną funkcją next.

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

Jednak, jak pan wskazuje, oczywistym rozwiązaniem jest użycie innej nazwy dla zmiennej.

+0

Dzięki, że to, co szukałem. – astay13

6

Możesz bezpośrednio zadzwonić na metodę iteratora next(). Tracisz jednak możliwość tłumienia StopIteration na końcu iteracji na korzyść zobaczenia wartości domyślnej.

desired_value = value_iterator.next() 

Należy zauważyć, że w Pythonie 3 nazwa tej metody została zmieniona na __next__().

2

Przed przypisać coś obok użyć coś takiego:

real_next = next