5. nonlocal语句
python中与作用域相关的语句有两条:
- global 语句;
- nonlocal 语句;
nonlocal语句
作用:
告诉解释器,nonlocal声明的变量不是局部变量,也不是全局变量,而是外部嵌套函数内的变量。
语法:
nonlocal 变量名1,变量名2, ...
语法说明
- nonlocal 语句只能在被嵌套的函数内部进行使用;
- 对nonlocal变量进行赋值将对外部嵌套函数作用域内的变量进行操作;
- 当有两层或两层以上函数嵌套时,访问nonlocal变量只对最近一层的变量进行操作;
- nonlocal语句的变量列表里的变量名,不能出现在此函数的形参列表中。
示例
v = 100
def f1():
v = 200
print("f1:", v)
def f2():
nonlocal v
v = 201 # 将f1函数内的v修改为201
print("f2:", v)
f2()
print("f1 after f2()", v)
f1()