欢迎大家来到IT世界,在知识的湖畔探索吧!
函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计。函数就是面向过程的程序设计的基本单元。而函数式编程(请注意多了一个“式”字)——Functional Programming,虽然也可以归结到面向过程的程序设计,但其思想更接近抽象的计算。
我们首先要搞明白计算机(Computer)和计算(Compute)的概念。
在计算机的层次上,CPU执行的是加减乘除的指令代码,以及各种条件判断和跳转指令,所以,汇编语言是最贴近计算机的语言。而计算则指数学意义上的计算,越是抽象的计算,离计算机硬件越远。对应到编程语言,就是越低级的语言,越贴近计算机,抽象程度低,执行效率高,比如C语言;越高级的语言,越贴近计算,抽象程度高,执行效率低,比如Python语言。函数式编程就是一种抽象程度很高的编程范式。
函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数!
Python对函数式编程提供部分支持。由于Python允许使用变量,因此,Python不是纯函数式编程语言。
高阶函数英文叫Higher-order function。什么是高阶函数?我们来看代码,变量可以指向函数
例如Python内置求绝对值函数abs()
可以看见,只写abc只是函数本身,而abs(-5)才是函数调用,实际我们如果需要函数的结果,可以将函数赋值给变量。
例如:
我们可以看到,我们将调用函数的结果,赋值给变量 i ,这样变量就可以打印出结果,如果将函数本身赋值给变量f ,那么变量也拥有这个函数的功能,这个变量将指向这个函数,使用变量 f ()来调用函数和直接调用abs()效果是一样的。函数名也可以是变量。函数是由def定义,函数名,括号,括号参数,冒号,函数体组成。那么函数名是什么呢,可以发现,函数名是指向函数的变量,例如abs()这个函数,可以将abs看成变量,它指向一个可以求绝对值的函数,如果把abs指向其他的对象,例如我们给abs赋值,那看看还会指向求绝对值的函数么?
TypeError: ‘int’ object is not callable 提示,类型错误,int类型是不可以被调用的,我们看到,abs这个变量被赋值5,然后使用abs(-5)调动函数,发现异常,此时abs变量指向的不是函数,而是一个int类型的 5 ,实际上,我们工作或是开发中写代码,是不能这么写的,由此可以看出函数名其实就是变量。
注意:由于 abs 函数实际上是定义在 import builtins 模块中的,所以要修改 abs 变量的指向在其它模块也生效可以使用。
我们想到,函数可以传参数,而函数名可以做变量,那我们函数里面的参数,也可以传入函数名。
那我们可以看到,将函数作为参数,传给另一个参数就是高阶函数。
点赞加关注加转发是您给我更新的动力,如需今日相关资料或者问题可私信“资料”,特别提醒本人不是培训机构,只是爱好,自学多年分享经验,谢谢。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/30130.html