Python进阶系列连载(11)——Python内置高阶函数reduce(上)

浏览: 2965

前言

进阶部分连载继续~

如果还没看过我的入门连载部分,先看:

https://ask.hellobi.com/blog/wangdawei/10288


当然,小编的免费入门课程已经有咯,看过连载的朋友可以看看视频再快速梳理一遍~

视频传送门:https://edu.hellobi.com/course/234

图片.png

前文传送门:

Python进阶系列连载(1)——那些容易被忽略的问题(上)

Python进阶系列连载(2)——那些容易被忽略的问题(中)

Python进阶系列连载(3)——那些容易被忽略的问题(下)

Python进阶系列连载(4)——迭代器

Python进阶系列连载(5)——生成器(上)

Python进阶系列连载(6)——生成器(中)

Python进阶系列连载(7)——生成器(下)

Python进阶系列连载(8)——闭包(上)

Python进阶系列连载(9)——Python内置高阶函数map(上)

Python进阶系列连载(10)——Python内置高阶函数map(下)


高阶函数


什么是高阶函数?有高阶一说,那肯定就有比较"低阶"的了


图片.png


什么是"低阶"的呢?我们想想之前学过的函数

形式为   函数名(参数1,参数2,...)


例如:


图片.png


我们常见的函数传入的参数是一些基本数据类型,如数值,字符,列表,元组,字典等


相比之下,高阶函数的高阶体现在函数的参数可以是函数!


我们看看:


图片.png


小明:老湿,你这写的是啥啊,函数里怎么还有其他函数呢?


小明你看,sum函数将add函数的函数名(add)写在了sum函数的参数中

然后在sum函数的函数体(具体内容部分)中使用了add函数

所以,这里的sum函数就是一个高阶函数


小明:


图片.png


小明:原来是这样啊,老湿,我们上节课学的map函数也是高阶函数吧


我记得格式是map(函数1,序列),因为map函数接收了函数1这个函数

所以是高阶函数!


对,小明说的不错~


小红:老湿,除了我们之前学的map,Python还有啥内置的高阶函数么?


嗯,这个问题问得好!今天我们来学个新的高阶函数:reduce


reduce


reduce,百度翻译是:

图片.png


减小,缩小的意思~


还记得俺老孙的金箍棒么?


图片.png


缩小后可以放在耳朵里面哦~


reduce也有缩小的意思,只不过,这里的缩小指的不是物理上的,而是对一个这个reduce高阶函数传入的参数(序列 或者说是 可迭代对象)进行"缩小"操作!


小明:老湿,这个缩小具体怎么缩小啊?


reduce的格式如下:

reduce(函数1,序列)


划重点:这个函数1接收两个参数,然后将序列中的前两个元素传入函数1中,计算返回的一个结果与序列的第3个元素一起再次当做参数传入函数1中,如此往复直到序列结束。


我们看个简单栗子:


图片.png


小明:老师,你翻车了!


图片.png


嗯,抛出了异常,我们看看异常内容:reduce没有定义,这是为什么呢?map不是直接可以用么?

是这样的,Python从2版本到我们学的3版本,对reduce做了调整,将其放入了一个模块中

这个模块就是:functools

所以我们调用一下模块:


图片.png


好了,这次ok了


所以reduce已经不能算是Python3版本的“内置”高阶函数了!


小红:老湿,这个不太好理解啊!


嗯,我们手绘一张图帮助理解一下~


图片.png


嗯,这个操作直到return的 36 加上列表最后的 9 ,返回最终结果 45


小红:懂啦~


今天作业:

1.敲一遍代码,感受一下reduce的黑魔法

自己不敲代码永远学不会写代码

下课

人生苦短,我选Python

未完待续,连载中......

欢迎评论指出文中错误和提问~~~


下一篇链接:Python进阶系列连载(12)——Python内置高阶函数reduce(下)

推荐 4
本文由 ID王大伟 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

3 个评论

一直关注
加不到9 ,只到36
哦,到了

要回复文章请先登录注册