1.内部函数,只能在外部函数内调用,否则出错
>>> def fun1(): #fun2()的外部函数
print("fun1()被调用...")
def fun2(): #fun1()的内部函数
print("fun2()被调用..")
fun2()
>>> fun1()
fun1()被调用...
fun2()被调用..
2.闭包
对象是附加方法的数据,闭包是附加数据的函数。(Objects are data with methods attached, closures are functions with data attached.)
要形成闭包,首先得有一个嵌套的函数,即函数中定义了另一个函数,闭包则是一个集合,它包括了外部函数的局部变量,这些局部变量在外部函数返回后也继续存在,并能被内部函数引用。
>>> def FunX(x):
def FunY(y):
return x * y
return FunY
>>> g = FunX(8)
>>> g(5)
40
>>>type(g) #g的类型
<class,'function'>
>>> FunX(8)(5)
40