Python 3.x使用nonlocal定义变量

时间:2022-04-18 16:58:14

Python 3新增了nolocal来声明变量。

语法:

nonlocal 变量名

一般情况下我们在函数内对变量赋值,那么变量会被认为是本地变量。

def getvar()
    v = 1
    return v

getvar()

v就是一个本地变量。有时我们想要定义一个函数外的变量,但这个变量也不希望它是一个全局变量。这种情况就可以考虑使用nolocal变量。

def incrementer():
    counter = 0
    def increment():
        nonlocal counter
        counter += 1
        return counter
    return increment

increment = incrementer()

increment()   # 1
increment()   # 2

counter被定义为一个nonlocal变量,nonlocal变量会被限定在它最近包含它的代码块,代码块里的函数都是可以使用它,这是有区别与global变量。