python中的闭包

时间:2019-06-18
本文章向大家介绍python中的闭包,主要包括python中的闭包使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

闭包的定义:先定义一个函数func1,然后在定义的函数的内部再定义一个函数func2,并且这个内部函数func2,使用到了外边函数func1的变量,那么这个函数func2和用到的变量称为闭包。

在理解闭包之前,先来理解一下函数名,看以下代码:

def mm():
    pass

print(mm)

执行结果:

从上面可以看出;

在python中定义函数的时候,函数名也是一个变量,这个变量(函数名)指向了一个地址,这个地址对应的空间中存放函数执行体。

接下来是看一个简单的闭包程序:

 1 # 闭包
 2 def mm(num1):
 3     def nn(num2):
 4         print("nn==>",nn)
 5         return num1 + num2
 6     return nn
 7 
 8 ret = mm(10)
 9 ret1 = ret (20)
10 print("ret==>",ret)
11 print(ret1)

执行结果:

这段代码的执行过程是:

1.python解释器从上往下进行解析,遇到函数跳过;

2.当执行到第8行的时候,这时定义了一个变量ret,这个变量ret等于函数mm的返回值nn;

3.又因为nn是一个函数名,也就是说,此时的ret指向一个函数的引用(函数的地址),ret = nn。如上图中红色框部分。

4.当执行ret(20)的时候,相当于执行nn(20),最后返回的结果是30.

原文地址:https://www.cnblogs.com/xifengmo/p/11045185.html