Python 3.x使用nonlocal定义变量
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变量。
 
             
             
             
             
            