内嵌函数
1. python的函数是可以嵌套的,也就是允许在函数内部创建另一个函数,这种函数叫做内嵌函数。
def fun1_1(x):
def fun1_2(y):
return x + y
fun1_2()
注意的是,内部函数只能在外部函数内部调用。
闭包
如果在一个内部函数里,对在外部作用域,但不是全局作用域的变量进行引用,那么内部函数就被认为是闭包。举个例子:
def fun1_1(x):
def fun1_2(y):
return x + y
return fun1_2
fun1_2函数是一个内部函数,对外部的x进行了引用(x非全局作用域),这个内部函数fun1_2就是一个闭包。
注意:内部函数对外部函数内的局部变量只能访问,而不能修改。比如:
def fun1_1(x):
k = 2
def fun1_2(y):
k = k + y
return k
return fun1_2
在内部函数fun1_2中修改外部函数fun1_2的局部变量k,则会报错,如果非要修改的话,可以加一个关键字:nonlocal,
def fun1_1(x):
k = 2
def fun1_2(y):
nonlocal k
k = k + y
return k
return fun1_2
print(fun1_1(2)(3))