Python高阶函数详解:从基础概念到map、filter与reduce实战

夏知夏
夏知夏
发布时间:2026-10-15| 5人浏览过
原创

本文深入解析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高阶函数的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。