什么是python高阶函数?高阶函数如何使用?

今天给大家分享一下什么是python高阶函数?高阶函数如何使用?的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧 。

什么是python高阶函数?高阶函数如何使用?

文章插图
一、高阶函数
函数的定义
在python中,函数名就是变量,下面这个实例中把num函数名看成变量,指向一个计算的函数!因此函数名其实就是指向函数的变量,故变量可指向函数,且函数的变量可接受变量,那么任意一个函数可接受一个函数作为参数,这种函数就叫高阶函数 。函数名可作为返回值、也可作为参数 。举个实例:
def num (a,b):  return a+ba = numprint(a(1,4))运行结果: 5
(1)函数名作为参数
def fun(a):  return a*adef fun1(a,b,c):  return a(b)+a(c)print(fun1(fun(),1,5))   # fun()作为参数,传给fun1运行结果:26
(2)函数名作为返回值
def fun(a):  def fun2(b):    return a*b  return fun2()a = fun(1)    print(a)     #外部函数返回的是一个函数对象,也就是一个变量,然后作为函数对象传参,获得内部函数的返回值print(a(3))运行结果: 6
二、常用的高阶函数有三个
map、filter、reduce
先讲下匿名函数lambda,语法格式:lambda[形参1,形参2,... :表达式]表达式执行后,返回冒号后的表达式,例如:
x = 1lambda x:x+3运行结果:4
(1)map(function,iterable)
它第一个要传的元素是函数名或lambda匿名函数表达式,第二个要传的是可迭代对象,版本不同,返回的对象不同,在python 2.x中是返回列表,python 3.x则返回迭代器 。举个例子:
array = [2,4,6]a = map(lambda x:x+1,array)print(a)print(list(a))运行结果: [3, 5, 7]
map()函数的作用就是将可迭代对象里的每个元素进行函数操作,然后将元素操作后所组成的可迭代对象进行返回
(2)filter(function, iterable)
它第一个要传的元素是函数名或lambda匿名函数表达式,第二个要传的是可迭代对象 。
举个例子:
array = [2,4,6]a = filter(lambda x:x+1,array)print(a)print(list(a))运行结果:[2,4,6]
【什么是python高阶函数?高阶函数如何使用?】array = [1,5,8]a = filter(lambda x:x%2==0,array)print(a)print(list(a))运行结果: [8]
filter函数的作用就是将可迭代对象的元素带入函数,返回True的对象,一般用于筛选使用,不执行for循环 。
(3)reduce(function, iterable)
它传的是2个元素,将前2个元素带入函数中,然后将返回值作为一个元素,与第三个元素进行运算,直到结束返回最后结果 。
reduce(function, iterable[, initializer])#从左到右对一个序列的项进行累加
reduce() 函数在 python2 中是内置函数,在 python3 中放到了 functools 模块下:
from functools import reduce  #导入模块array = [1,2,3,4,5,6]result = reduce(lambda x,y:x+y,array)print(result)运行结果:21
1+2 = 3
3+3 = 6
6+4=10
10+5=15
15+6=21
以上就是什么是python高阶函数?高阶函数如何使用?的相关知识点,有兴趣的小伙伴可继续关注哦!

    推荐阅读