Python高阶函数详解:从基础概念到map、filter与reduce实战
本文深入解析Python高阶函数的核心概念,阐述函数名作为变量的特性。详细讲解lambda匿名函数的语法,并逐一演示map、filter和reduce三个常用高阶函数的用法、参数传递及在Python 2与3中的版本差异,帮助开发者掌握函数式编程技巧。
一、高阶函数
函数定义
在Python中,函数名本质上是一个变量。以method函数为例,其函数名指向具体的计算逻辑。因此,函数名即为指向函数的变量,这意味着变量可以指向函数。
既然变量可以指向函数,且函数的变量能够接收其他变量作为参数,那么任意一个函数若接受一个函数作为参数,该函数即被定义为高阶函数。
函数名既可以作为参数传递,也可以作为返回值返回。
def method(a,b):
return a+b
a = method
print(a(1,4))
#输出; 5
(1)函数名作为参数
def fun(a):
return a*a
def 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))
# 输出:<function method.<locals>.method2 at 0x02B5E9C0>
6
二、常用的高阶函数
map、filter、reduce
首先介绍匿名函数lambda。
语法格式:lambda[形参1,形参2,... :表达式]
表达式执行完毕后,返回冒号后表达式的结果。
x = 1
lambda x:x+3
(1)map(function,iterable)
该函数第一个参数需传入函数名或lambda匿名函数表达式,第二个参数为可迭代对象。
在Python 2.x版本中,map返回列表;而在Python 3.x版本中,它返回一个迭代器。
array = [1,4,7]
a = map(lambda x:x+1,array)
print(a)
print(list(a))
输出:<map object at 0x02AB11B0>
[2, 5, 8]
map()函数的作用是对可迭代对象中的每个元素执行指定的函数操作,并将操作后的结果组成新的可迭代对象返回。
(2)filter(function, iterable)
同样,其第一个参数需传入函数名或lambda匿名函数表达式,第二个参数为可迭代对象。
array = [1,4,7]
a = filter(lambda x:x+1,array)
print(a)
print(list(a))
输出:<filter object at 0x02AB11B0>
[1,4,7]
array = [1,4,7]
a = filter(lambda x:x%2==0,array)
print(a)
print(list(a))
输出:<filter object at 0x02AB11B0>
[4]
filter函数将可迭代对象的元素传入函数,仅返回使函数返回True的元素,通常用于数据筛选,从而省略显式的for循环。
(3)reduce(function, iterable)
该函数接收两个元素,将前两个元素传入函数计算,将返回值作为新元素与第三个元素继续运算,直至遍历结束并返回最终结果。
reduce(function, iterable[, initializer])从左到右对序列的项进行累计计算。
reduce()函数在Python 2中是内置函数,而在Python 3中已移至functools模块下。
from functools import reduce
array = [1,2,3,4,5]
result = reduce(lambda x,y:x+y,array)
print(result)
#结果:15
1+2 = 3
3+3 = 6
6+4=10
10+5=15以上就是Python高阶函数使用教程示例的详细内容,更多关于Python高阶函数的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









