本文教程操作环境:windows7系统、Python 3.9.1,DELL G3电脑。
1、可以看到函数log它最终的返回值是一个函数wrapper。在python中,返回函数指:对于一个函数c,它最后的返回值是一个函数d,那么函数c就是一个返回函数。返回函数的好处就是当调用c函数时不用立即执行c中的所有逻辑,我们可以看下面的例子:
deflazy_sum(*args): defsum(): ax=0 forninargs: ax=ax+n returnax returnsum
2、函数lazy_sum实现了一个求和的功能,当我们调用lazy_sum时,其返回的不是直接的求和值,而是一个函数sum,
>>>f=lazy_sum(1,3,5,7,9) >>>f <functionlazy_sum.<locals>.sumat0x101c6ed90>
3、这里f变量其实就是sum函数,所以要求和的值时,调用f才可以。
>>>f() 25
“当有一个函数h,它定义了内部函数g,最后返回了函数g,并且在该过程中g还使用了h函数的局部变量,那么这种程序python中称之为 闭包 ”。根据闭包定义,其实它也是一种返回函数,只不过它的内部函数使用了外部函数的局部变量(入参)。