5. nonlocal语句

python中与作用域相关的语句有两条:

  1. global 语句;
  2. nonlocal 语句;

nonlocal语句

作用:

告诉解释器,nonlocal声明的变量不是局部变量,也不是全局变量,而是外部嵌套函数内的变量。

语法:

nonlocal 变量名1,变量名2, ...

语法说明

  1. nonlocal 语句只能在被嵌套的函数内部进行使用;
  2. 对nonlocal变量进行赋值将对外部嵌套函数作用域内的变量进行操作;
  3. 当有两层或两层以上函数嵌套时,访问nonlocal变量只对最近一层的变量进行操作;
  4. 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()