十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
小编给大家分享一下Python如何实现返回函数+匿名函数,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
成都创新互联长期为上千多家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为延吉企业提供专业的网站设计、成都网站建设,延吉网站改版等技术服务。拥有十年丰富建站经验和众多成功案例,为您定制开发。
粗粗看了一遍学习资料,感觉返回函数的意思好理解,但是实际应用起来就有点麻烦了。
先捋一捋思路叭。
首先,高阶函数除了能接收函数作为参数外,也能将函数作为结果值返回。
拿求和做个简单的例子:
一般的求和函数我们会这样写:
>>> def calc_sum(*args):
a = 0
for n in args:
a = a + n
return a
>>> calc_sum(1,2,3,4)
10
直接求解,返回结果。
但是有时候我们不需要立刻求和,可能后面还需要计算,这个时候就要用到返回函数了。
(当我看到这里的时候,脑子里想的一直都是:为什么不要它立刻求和??)
返回函数到底又什么作用呢?
就好比做一件事,在做的过程中,返回函数的作用就是告诉你,我做到哪里/如何了,你能干嘛干嘛了。
暂时没有更具体的例子,希望以后能遇到,加深一下理解!(太抽象了!!)
好,回过头再来看看 求和用返回函数怎么写。
(不返回求和结果,而是返回一个求和的函数)
>>> def lazy_sum(*args):
def sum():
a = 0
for n in args:
a = a + n
return a
return sum
>>> f = lazy_sum(1,3,5,7,9)
>>> f
可以看到,当我们调用lazy_sum()
时,返回的不是求和结果,而是求和函数。
如果要计算真正的求和结果,就要再调用f.【 f() 相当于sum() 】
>>> f()
25
内部函数sum
可以引用外部函数lazy_sum
的参数和局部变量。
当lazy_sum
返回函数sum
时,相关参数和变量都保存在返回的函数中。(虽然这是一句很好理解的话,但是我莫名感觉它不简单!
这种程序结构,叫做“闭包”(Closure)。(吼!
这里需要注意的是,每次调用lazy_sum,返回的都是一个新的函数!
就算传入参数相同,返回的函数也不同!
>>> f1 = lazy_sum(1, 3, 5, 7, 9)
>>> f2 = lazy_sum(1, 3, 5, 7, 9)
>>> f1==f2
False
( f1() 和 f2()的调用结果互不影响
看完了这篇文章,相信你对“Python如何实现返回函数+匿名函数”有了一定的了解,如果想了解更多相关知识,欢迎关注创新互联行业资讯频道,感谢各位的阅读!