首页 > temp > python入门教程 >
-
Python连载15-高阶函数&map映射
一、高阶函数
1.定义:把函数作为参数使用的函数叫做高阶函数
(1)变量可以设置为赋值
a=100 b=a
(2)函数名称就是一个变量
def FunA(): print("FunA()") FunA() FunB = FunA FunB()
注意:i.函数名称是变量。ii.FunA和FunB只是名称不一样而已
iii.既然函数名称是变量,则应该可以被当做参数传入另一个函数中去。
2.高阶函数举例
#funA是一个普通函数,返回一个传入数字的100倍数字 def funA(n): return n * 100 #在写一个函数,把传入参数乘以300倍,利用高阶函数 def funB(n ): return funA(n) * 3 print(funB(9))
我们再写一个函数,对比一下谁的调用更好
def funA(n): return n * 100 def funC(n,f): #假定函数是把n扩大三百倍00 retrun f(n) * 3 print(funC(9,funA))
很显然下面的调用是更好的:
(1)减少了函数之间的耦合性,我们利用变量来达到传参的目的
(2)下面的函数扩展性更好,例如:我想要扩大500倍呢,再建立一个函数即可,而不用区修改原有的函数。
3.系统的高阶函数
(1)原意就是映射,即把集合或者列表的元素,每一个元素都按照一定规则实行操作,生成一个新的列表或者集合。
(2)map函数是系统提供的具有映射功能的函数,返回值是一个迭代对象
l1 = [i for i in range(10)] print(l1) l2 = [] for i in l1: l2.append(i*10) print(l2) #利用map来实现 def mulTen(n): return n*10 l3 = map(mulTen,l1) print(type(l3)) print(l3) print(list(l3)) l4 = [i for i in l3] print(l4)
前两行不解释,第三行这个map类,第四行有历史原因:python2是指在列表上操作则返回列表,但python3改了,在列表操作返回不是类,至于是什么意思,我也不清楚。第五行我们列表化打印出来了。第六行,遗留问题为啥是空列表?
二、源码:
d19_2_higher_order_fuction
地址:https://github.com/ruigege66/Python_learning/blob/master/d19_2_higher_order_fuction
2.CSDN:https://blog.csdn.net/weixin_44630050(心悦君兮君不知-睿)
出 处:https://www.cnblogs.com/ruigege0000/p/11075031.html