一、高阶函数

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.欢迎关注微信公众号:傅里叶变换,后台回复”礼包“,获取大数据学习资料。

最新文章

  1. B样条基函数的定义和性质
  2. php emoji处理微信表情
  3. POJ 1012 Joseph 推导,暴力,约瑟夫环,打表 难度:2
  4. 项目管理: Maven 让事情变得简单
  5. 【转】C# 子窗体如何调用父窗体的方法
  6. 如何通过Android Studio发布library到jCenter和Maven Central
  7. UVA 12378 Ball Blasting Game 【Manacher回文串】
  8. php分页类及其实现原理
  9. CentOS 6.4下编译安装MySQL 5.6.16
  10. Oracle的海量存储技术
  11. ensp实战之防火墙安全转发策略
  12. Cookie的格式及组成
  13. JavaScript 哈希表(散列表)应用
  14. 洛谷P3159 [CQOI2012]交换棋子
  15. javascript 倒计数功能
  16. 洛谷P3235 [HNOI2014]江南乐(Multi-SG)
  17. IDAPython教程(三)
  18. codeforce 240E 最小树形图+路径记录更新
  19. 对类的理解(c++)
  20. remote staging type or host is not specified

热门文章

  1. make 的参数
  2. Smarty优缺点
  3. 王立平--GC
  4. Win7 64有点找不到MSVCP71.DLL和MSVCR71.dll
  5. WPF范围选择控件(RangeSelector)
  6. (记录)mysql分页查询,参数化过程的坑
  7. UVA10940 - Throwing cards away II(找到规律)
  8. 1.QT该容器QVector,QList,QSet,QMap,QQueue,QStack,QMultiMap,QSingleList等待
  9. VS2012发布到XP平台
  10. 【C#】WindowsAPICodePack-Shell使用教程