返回函数

返回函数

当函数作为返回值返回的时候,称这个函数为返回函数

在python中除了可以接受函数作为参数外,还可以把函数作为结果值返回.

需求:实现一个可变参数的求和.通常是这么定义的:

def calc_sum(*args):
	sum = 0
	for i in args:
		sum += i
	return sum

现在需求有变,现在我不需要立即求和,而是在后面的代码中,根据需要再进行计算,这时候,我们可以不返回求和的结果,而是返回求和的函数.

def lazy_sum(*args):
	def calc_sum():
		sum = 0
		for i in args:
			sum += i
		return sum
	return calc_sum

当调用lazy_sum()时,返回的并不是求和的结果而是求和的函数

>>> f = lazy_sum(1, 2, 3, 4)
>>> f
<function lazy_sum.<locals>.calc_sum at 0x101b61598>

这时候调用f时,才真正计算求和的结果

>>> f()
10

像如上的函数,我们在函数lazy_sum中又定义了函数calc_sum,并且内部函数calc_sum可以使用lazy_sum的参数和局部变量,当lazy_sum返回函数calc_sum时,相关的参数以及变量都保存在返回的函数中,这种称为闭包

注意:当调用lazy_sum()时,每次调用都会返回一个新的函数,即使传入相同的参数.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值