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变量。