2014-09-11 117 views
0

我有一个嵌套在其他函数内的函数。我想从嵌套的第一个函数内部改变一个变量。Python:从子/嵌套函数中更改函数中的变量?

def myfunc(): 
    step=0 

    def increment(): 
     step+=1 

    increment() 
    increment() 
    increment() 
    print("Steps so far:", step) 

myfunc() 

给人

UnboundLocalError: local variable 'step' referenced before assignment

如果我尝试使用global,它不会工作,要么因为它试图取消引用一个变量stepmyfunc不存在。

有没有办法做到这一点,而没有一个全局变量?

回答

2

声明step作为nonlocal变量。它将使标识符在封闭范围内引用变量。只有

def increment(): 
    nonlocal step 
    step += 1 

注意 Python 3.x都有。

+0

@AshwiniChaudhary,你说得对。我在答案中添加了一个注释。 – falsetru 2014-09-11 13:39:05