Python开发入门之了解Python高阶函数
小职 2021-05-10 来源 :Go语言进阶学习 阅读 1106 评论 0

摘要:本文主要介绍了Python开发入门之了解Python高阶函数,通过具体的内容向大家展现,希望对大家Python的学习有所帮助。

本文主要介绍了Python开发入门之了解Python高阶函数,通过具体的内容向大家展现,希望对大家Python的学习有所帮助。

Python开发入门之了解Python高阶函数

一、什么是高阶函数?

高阶函数是在Python中一个非常有用的功能函数,所谓高阶函数就是一个函数可以用来接收另一个函数作为参数,这样的函数叫做高阶函数。

 

通过案例代码分析,一步一步深入概念。

 

二、变量可以指向函数

以Python内置的求绝对值的函数abs()为例。

 

调用该函数用以下代码:

 

print(abs(-10))

运行结果:

 Python开发入门之了解Python高阶函数

 

 

但是,如果只写abs呢?

 

print(abs)

运行结果:

 Python开发入门之了解Python高阶函数

 

 

可见,abs(-10)是函数调用,而abs是函数本身。

 

要获得函数调用结果,可以把结果赋值给变量:

 

x = abs(-10)

print(x)

运行结果:

 Python开发入门之了解Python高阶函数

 

 

但是,如果把函数本身赋值给变量呢?

 

f = abs

print(f)

运行结果:

 

Python开发入门之了解Python高阶函数 

 

结论:

 

函数本身也可以赋值给变量,即:变量可以指向函数。

 

如果一个变量指向了一个函数,那么,可否通过该变量来调用这个函数?

 

代码验证:

 

f = abs

print(f(-10))

运行结果:

 Python开发入门之了解Python高阶函数

 

 

结果相同,说明变量f现在已经指向了abs函数本身。直接调用abs()函数和调用变量f()完全相同。

 

三、函数名也是变量

那么函数名是什么呢?函数名其实就是指向函数的变量!对于abs()这个函数,完全可以把函数名abs看成变量,它指向一个可以计算绝对值的函数!

 

把abs指向其他对象,会有什么情况发生?

 

abs = 10

print(abs(-10))

运行结果:

 Python开发入门之了解Python高阶函数

 

 

代码解析:

 

把abs指向10后,就无法通过abs(-10)调用该函数了!因为abs这个变量已经不指向求绝对值函数而是指向一个整数10!

 

当然实际代码绝对不能这么写,这里是为了说明函数名也是变量。要恢复abs函数,请重启Python交互环境。

 

注:

 

由于abs函数实际上是定义在builtin模块中的,所以要让修改abs变量的指向在其它模块也生效,要用builtin.abs = 10。

 

四、传入函数

既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。

 

一个最简单的高阶函数:

 

def add(x, y, f):   

  return f(x) + f(y)

当调用add(-5, 6, abs)时,参数x,y和f分别接收-5,6和abs,根据函数定义,可以推导计算过程为:

 

x = -5

    y = 6

    f = abs

    f(x) + f(y) == abs(-5) + abs(6) == 11

    return 11

 

print(add(-5, 6, abs))

用代码验证一下:

 

print(add(-5, 6, abs))

 Python开发入门之了解Python高阶函数

 

注:

 

编写高阶函数,就是让函数的参数能够接收别的函数。

 

把函数作为参数传入,这样的函数称为高阶函数,函数式编程就是指这种高度抽象的编程范式。

 

五、总结

本文基于Python基础,介绍了Python函数中高阶函数的使用。每一个板块都通过案例的分析,运行效果图的展示,使读者更好的理解。重点介绍了在实际操作中,函数的传入时出现报错的问题。

 

欢迎大家积极尝试,有时候看到别人实现起来很简单,但是到自己动手实现的时候,总会有各种各样的问题,切勿眼高手低,勤动手,才可以理解的更加深刻。


我是小职,记得找我

✅ 解锁高薪工作

✅ 免费获取基础课程·答疑解惑·职业测评

Python开发入门之了解Python高阶函数

本文由 @小职 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved