Python中的非局部变量

非局部语句可以让所列的标识符(identifier)指向最近的嵌套作用域(enclosing scope)中已经绑定过的变量,全局变量除外。具体参考

这篇文章:http://codingpy.com/article/what-is-nonlocal-statement-in-python/

def a():
    i = 0
    def b():
        i=i+1
    b()
a()

b()中并不会赋值,a()和b()中i重名,报错local variable 'i' referenced before assignment

def a():
    i = 0
    def b():
        nonlocal i
        i=i+1
    b()
a()

b()虽然可以读到a()中的变量i,但不会对其可写,nonlocal可以指定b()中i的赋值对象指定为a()中i


作者:sschen_cn
来源:CSDN
原文:https://blog.csdn.net/sschen_cn/article/details/80271903
版权声明:本文为博主原创文章,转载请附上博文链接!

你可能感兴趣的:(Python中的非局部变量)