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(心悦君兮君不知-睿)

3.博客园:https://www.cnblogs.com/ruigege0000/

4.欢迎关注微信公众号:傅里叶变换,后台回复”礼包“,获取大数据学习资料。

原文地址:https://www.cnblogs.com/ruigege0000/p/11075031.html