前言
进阶部分连载继续~
如果还没看过我的入门连载部分,先看:
https://ask.hellobi.com/blog/wangdawei/10288
当然,小编的免费入门课程已经有咯,看过连载的朋友可以看看视频再快速梳理一遍~
视频传送门:https://edu.hellobi.com/course/234
前文传送门:
Python进阶系列连载(1)——那些容易被忽略的问题(上)
Python进阶系列连载(2)——那些容易被忽略的问题(中)
Python进阶系列连载(3)——那些容易被忽略的问题(下)
Python进阶系列连载(4)——迭代器
Python进阶系列连载(5)——生成器(上)
Python进阶系列连载(6)——生成器(中)
Python进阶系列连载(7)——生成器(下)
Python进阶系列连载(8)——闭包(上)
Python进阶系列连载(9)——Python内置高阶函数map(上)
Python进阶系列连载(10)——Python内置高阶函数map(下)
高阶函数
什么是高阶函数?有高阶一说,那肯定就有比较"低阶"的了
什么是"低阶"的呢?我们想想之前学过的函数
形式为 函数名(参数1,参数2,...)
例如:
我们常见的函数传入的参数是一些基本数据类型,如数值,字符,列表,元组,字典等
相比之下,高阶函数的高阶体现在函数的参数可以是函数!
我们看看:
小明:老湿,你这写的是啥啊,函数里怎么还有其他函数呢?
小明你看,sum函数将add函数的函数名(add)写在了sum函数的参数中
然后在sum函数的函数体(具体内容部分)中使用了add函数
所以,这里的sum函数就是一个高阶函数
小明:
小明:原来是这样啊,老湿,我们上节课学的map函数也是高阶函数吧
我记得格式是map(函数1,序列),因为map函数接收了函数1这个函数
所以是高阶函数!
对,小明说的不错~
小红:老湿,除了我们之前学的map,Python还有啥内置的高阶函数么?
嗯,这个问题问得好!今天我们来学个新的高阶函数:reduce
reduce
reduce,百度翻译是:
减小,缩小的意思~
还记得俺老孙的金箍棒么?
缩小后可以放在耳朵里面哦~
reduce也有缩小的意思,只不过,这里的缩小指的不是物理上的,而是对一个这个reduce高阶函数传入的参数(序列 或者说是 可迭代对象)进行"缩小"操作!
小明:老湿,这个缩小具体怎么缩小啊?
reduce的格式如下:
reduce(函数1,序列)
划重点:这个函数1接收两个参数,然后将序列中的前两个元素传入函数1中,计算返回的一个结果与序列的第3个元素一起再次当做参数传入函数1中,如此往复直到序列结束。
我们看个简单栗子:
小明:老师,你翻车了!
嗯,抛出了异常,我们看看异常内容:reduce没有定义,这是为什么呢?map不是直接可以用么?
是这样的,Python从2版本到我们学的3版本,对reduce做了调整,将其放入了一个模块中
这个模块就是:functools
所以我们调用一下模块:
好了,这次ok了
所以reduce已经不能算是Python3版本的“内置”高阶函数了!
小红:老湿,这个不太好理解啊!
嗯,我们手绘一张图帮助理解一下~
嗯,这个操作直到return的 36 加上列表最后的 9 ,返回最终结果 45
小红:懂啦~
今天作业:
1.敲一遍代码,感受一下reduce的黑魔法
自己不敲代码永远学不会写代码
下课
人生苦短,我选Python
未完待续,连载中......
欢迎评论指出文中错误和提问~~~
下一篇链接:Python进阶系列连载(12)——Python内置高阶函数reduce(下)