python返回函数
python中的高级函数除了可以接受函数作为参数,还可以把函数作为结果返回;
例如:一个求和函数
def sums(*args):
sum1 = 0
for i in args:
sum1 = sum1 + i
return sum1
这个函数用于计算传入的list或tuple元素之和,如果我们不需要马上得到计算结果,而是在需要的时候得到计算结果呢:
所以,我们可以不返回计算的和,而是返回计算的函数:
def lazy_sum(*args):
def sums():
sum1 = 0
for i in args:
sum1 = sum1 + i
return sum1
return sums
这里,我们调用lazy_sum函数时传入args参数,可以被其内部函数sums调用,同时返回一个包含有计算结果的函数sums
此时调用f(),才会返回该函数计算的值!!
我们称呼sums函数为内部函数,称呼lazy_sum函数为外部函数,内部函数可以调用外部函数的参数和局部变量;当lazy_sum返回函数sums时,sums所使用的相关参数和变量都保存在返回的函数中,我们称之为“闭包(closure)”;
使用这种返回函数方式生成的函数,每一次都是不一样的;
未完,待补充