重庆建设工程信息网网站,国贸附近网站建设,列举网站建设的SEO策略,搜索大全浏览器返回函数
粗粗看了一遍学习资料#xff0c;感觉返回函数的意思好理解#xff0c;但是实际应用起来就有点麻烦了。
先捋一捋思路叭。
首先#xff0c;高阶函数除了能接收函数作为参数外#xff0c;也能将函数作为结果值返回。
函数作为返回值
拿
求和
做个简单的例子#x…返回函数
粗粗看了一遍学习资料感觉返回函数的意思好理解但是实际应用起来就有点麻烦了。
先捋一捋思路叭。
首先高阶函数除了能接收函数作为参数外也能将函数作为结果值返回。
函数作为返回值
拿
求和
做个简单的例子
一般的求和函数我们会这样写def calc_sum(*args):
a 0
for n in args:
a a n
return acalc_sum(1,2,3,4)
10
直接求解返回结果。
但是有时候我们不需要立刻求和可能后面还需要计算,这个时候就要用到返回函数了。
当我看到这里的时候脑子里想的一直都是为什么不要它立刻求和
返回函数到底又什么作用呢
就好比做一件事在做的过程中返回函数的作用就是告诉你我做到哪里如何了你能干嘛干嘛了。
暂时没有更具体的例子希望以后能遇到加深一下理解太抽象了
好回过头再来看看 求和用返回函数怎么写。
不返回求和结果而是返回一个求和的函数def lazy_sum(*args):
def sum():
a 0
for n in args:
a a n
return a
return sumf 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)f1f2
False
( f1() 和 f2()的调用结果互不影响