2012-07-12 56 views
6

我想在迭代器上使用next函數,但是我在同一個作用域中有一個局部變量,它的名稱也是next。顯而易見的解決方案是重命名局部變量,但是,我對Python很新,所以我很想知道如何爲next函數添加前綴,以便達到所需的行爲。Python中next()的作用域

的代碼我使用看起來像這樣:

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

請注意,我使用Python 3.2。

回答

10

您可以使用__builtins__.next來引用next內置函數。

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

但是,正如您指出的那樣,顯而易見的解決方案是爲變量使用不同的名稱。

+0

謝謝,這就是我一直在尋找。 – astay13 2012-07-13 13:52:05

6

您可以直接調用迭代器的next()方法。然而,你失去了在迭代結束時抑制StopIteration的能力,以便看到默認值。

desired_value = value_iterator.next() 

請注意,在Python 3中,此方法已更名爲__next__()

2

之前分配的東西到明年,使用類似:

real_next = next