当前位置: 首页 > 科技观察

一篇文章带你读懂Python高阶函数

时间:2023-03-14 11:10:16 科技观察

1、什么是高阶函数?高阶函数是Python中非常有用的函数。所谓高阶函数就是可以用来接收另一个函数作为参数的函数,这样的函数称为高阶函数。通过案例代码分析,一步步深入概念。2.变量可以指向函数以Python内置的绝对值函数abs()为例。调用这个函数的代码如下:print(abs(-10))运行结果:但是,如果你只写abs呢?print(abs)运行结果:可见abs(-10)是函数调用,abs是函数本身。要获取函数调用的结果,可以将结果赋值给一个变量:x=abs(-10)print(x)运行结果:但是,如果函数本身被赋值给一个变量呢?f=absprint(f)运行结果:结论:Function也可以赋值给一个变量,即一个变量可以指向一个函数。如果一个变量指向一个函数,是否可以通过这个变量来调用这个函数呢?代码验证:f=absprint(f(-10))运行结果:结果一样,说明现在变量f已经指向了abs函数本身。直接调用abs()函数与调用变量f()是完全一样的。3、函数名也是一个变量,那么函数名是什么?函数名其实就是一个指向函数的变量!对于函数abs()来说,函数名abs可以看作是一个变量,它指向一个可以计算绝对值的函数!abs指向其他对象,会发生什么?abs=10print(abs(-10))运行结果:代码分析:abs指向10后,无法通过abs(-10)调用函数!因为变量abs不再指向绝对值函数而是指向一个整数10!当然实际代码肯定不会这样写,这里是为了说明函数名也是一个变量。要恢复abs功能,请重新启动Python交互环境。注意:由于abs函数实际上是在builtin模块中定义的,所以需要使用builtin.abs=10来使修改后的abs变量的指向在其他模块中生效。4.传入函数既然变量可以指向函数,函数的参数可以接收变量,那么一个函数可以接收另一个函数作为参数。这种函数称为高阶函数。最简单的高阶函数之一:defadd(x,y,f):returnf(x)+f(y)调用add(-5,6,abs)时,参数x,y,f分别接收-5,6和abs,根据函数定义,可以推导出计算过程为:x=-5y=6f=absf(x)+f(y)==abs(-5)+abs(6)==11return11print(add(-5,6,abs))用代码验证一下:print(add(-5,6,abs))注:写高阶函数就是让函数的参数可以接收到其他函数.函数作为参数传入,这样的函数称为高阶函数,函数式编程就是指这种高度抽象的编程范式。五、小结本文以Python为基础,介绍Python函数中高阶函数的使用。每个部分都通过一个案例进行分析,并展示运行效果图,让读者更好地理解。重点解决实际运行中函数传入报错的问题。欢迎大家积极尝试。有时候看别人实现很简单,但是到了自己实现的时候,总会出现各种各样的问题。不要野心太大,努力理解得更深刻。