Python:从子/嵌套函数中更改函数中的变量?

时间:2014-09-11 13:33:05

标签: python function namespaces global-variables

我有一个嵌套在另一个函数中的函数。我想从嵌套的函数中更改第一个函数中的变量。

def myfunc():
    step=0

    def increment():
        step+=1

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

myfunc()

给出

  

UnboundLocalError:局部变量' step'在分配前引用

如果我尝试使用global,它就会失败,因为它会尝试取消引用step以外的变量myfunc而不存在。< / p>

如果没有全局变量,有没有办法做到这一点?

1 个答案:

答案 0 :(得分:3)

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

def increment():
    nonlocal step
    step += 1

注意仅限Python 3.x。