nonlocal是python3x新加的功能,与global用法差不多,就是在局部作用域,如果想对父级作用域的变量进行改变时,需要用到nonlocal,当然这个用的不是很多,了解即可。
nonlocal只能在封装函数中使用,在外部函数先进行定义,在内部函数进行nonlocal声明
# *注意*:nonlocal 专门用于修改局部变量时使用
# nonlocal关键字只能用于嵌套函数中
nonlocal声明的变量只对局部起作用,离开封装函数,那么该变量就无效。
a = 10
def funa():
a = 1
def funb():
nonlocal a # a为外层的局部变量,对其进行修改,需要申请为外层函数的局部变量
print('funb函数中a的值:', a) # 引用局部变量
a = 2 # 把a = 2写在print('funb函数中a的值:', a)前,则不报错
funb()
print('funa函数中a的值:', a)
funa()
print(a)
运行结果:
funb函数中a的值: 1
funa函数中a的值: 2
10
# 只引用不修改可不声明
def outer():
a = 3
def inner():
print(a)
inner()
outer() # 3
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!