-
定义:
-
函数内部定义另外一个函数并且该内部函数可访问和修改外部变量的值
-
-
原理:
- 外部函数执行完后,有变量被内部函数使用则会将该变量绑定到内部变量后,再释放内存
-
语法
-
def outer_function():def inner_function():return 语句return inner_functionr = outer_function() # r指向的是函数inner_function的地址r1 = r() # 调用inner_function函数,得到返回值
-
-
内部函数访问和修改外部变量的值
-
访问
-
def adder(x):def wrapper(y):return x + yreturn wrapperadder5 = adder(5)print(adder5(6)) # 12
-
修改
-
外部函数的变量是不可变数据类型,使用nonlocal声明
-
-
def outer_function():a = 10def inner_function():nonlocal aa = 11return a*2return inner_functionr = outer_function() r1 = r() print(r1) # 22
-
外部函数的变量是可变数据类型
-
def outer_function(start):a = [start]def inner_function():a[0] = a[0] +1return a[0]return inner_functionr = outer_function(5) print(r(),r()) # 6,7
-
-