闭包其实就是函数里面套函数,然后外函数可以return里面的函数的地址(的引用)
def func1( ): #定义外函数
print('---1---')
def func2(): #定义内函数
print('---2---')
return func2 #返回内函数的引用
f = func1( )
这样运行的话,只会打印第二行 ---1---
但是f 是外函数的返回值,这个返回值是func2也就是内函数的引用地址,相当于f 也指向了内函数,所以 f( )就等于调用内函数。
f( ) #运行这行代码的结果是 ---2---
闭包扩展:
def func1(num1):
print(num1)
def func2(num2):
print(num1+num2)
return func2
f = func1(100)
f(200)
运行后:
100
300