将函数作为返回值返回的函数
是不是比较拗口
明白意思就好了
那么这是什么意思呢?为什么会出现「返回函数」呢?
这个返回函数的使用场景是,我们不急于通过某个函数得到某种结果,而是在定义好这个「返回函数」后,在后文中才用到,那么这个情况下就需要用到返回函数。
那么怎么做呢?
其实也很简单,就是我们定义一个函数,在函数内部再定义,或者生成一个函数,然后将这个内部的函数返回即可。
有没有示例?
有
请看
#返回求和函数,这次用下可变参数
def fun(*args):
#定义函数
def getSum():
result=0
for i in args:
result=result+i
return result
return getSum
可见,我们在fun函数内部,定义了getSum函数,getSum函数需要依赖fun函数的参数,但是我们调用fun函数是,不能直接拿到sum函数中的运算结果,需要再调用一下getSum函数才可以
所以,我们如果想得到最后的和,可以这么调用
f=fun([1,2,3,4,5])
f()
见效果图:

需要注意的是,当我们调用外层函数时,调用n次,返回的函数也不是同一个函数,而是一个新的函数,即使传入的参数是一致的,返回的函数仍是新的函数
引入新的概念--闭包
在上面例子中,我们的fun函数内部定义了内部函数,而内部函数引用了外部函数的参数和局部变量,当外层函数返回函数时,相关变量和参数都保存在返回的函数中,这种程序结构称为“闭包”
需要注意的是:返回函数不要引入任何循环变量,或者后续会发生变化的变量,否则结果可能跟你预期的有偏差
后期补示例