了解闭包之前,我们要了解一个概念 就是: 方法名 指向方法体 。用代码解释下就好理解了
def add():
print("testing")
add()
print(add)
打印结果:
testing
<function add at 0x0000019C9BB901E0> # 打印结果可以看出是打印的 函数对象, add 名字 >>> add 函数体
我们可以把这个指针 赋值给其他, 我们试试 看以下代码 :
def add():
print("testing")
add()
print(add)
add01=add
add01()
print(add01)
打印结果 ;
testing
<function add at 0x00000211251F01E0>
testing
<function add at 0x00000211251F01E0> # 看来我们赋值成功, add01 指向了 方法体
下边我们正式进入主题 闭包的概念;
- 方法里嵌套一个方法
- 嵌套的方法用到了方法传递的参数
- 方法返回的是 嵌套的方法 ,
- 用返回的方法,可以再次输入参数 可以继续执行 嵌套的方法
闭包的关键是 当执行函数后,函数的变量不会被销毁, 因为他的嵌套函数 还会继续用。
代码示例如下:
def test(number):
print ("----------------1-------------")
def test_insert(insert_number):
print("--------------------3------------")
print(number+insert_number)
print("--------------------2 - -----------")
return test_insert
num=test(10) #test(10) 返回的是 函数名 test_insert, 函数名的指针传递给了 num
#闭包的关键是 当执行函数后,函数的变量不会被销毁, 因为他的嵌套函数 还会继续用。
num(3) # 我们传递一个参数, 但是他也会保存上次执行 传递的参数
打印结果如下:
----------------1-------------
--------------------2 - -----------
--------------------3------------
13