Python 笔记 | 高阶和匿名函数
在 Python 中,高阶函数(Higher-Order Functions)和匿名函数(或称为lambda函数)是两个重要的概念,它们使得代码更加灵活和简洁。
高阶函数(Higher-Order Functions)
高阶函数是那些接收函数作为参数或返回函数作为结果的函数。在 Python 中,函数是一等公民(First-Class Citizens),这意味着它们可以被赋值给变量、作为参数传递给其他函数,以及从其他函数返回。
示例
接收函数作为参数:
Python |
---|
| def apply_func(func, arg):
return func(arg)
def double(x):
return x * 2
result = apply_func(double, 5) # result is 10
|
返回函数作为结果:
Python |
---|
| def create_multiplier(n):
return lambda x: x * n # lambda arguments: expression 即匿名函数
multiply_by_three = create_multiplier(3)
result = multiply_by_three(5) # result is 15
|
匿名函数(Lambda Functions)
匿名函数是一种简单的、一行的函数,可以用 lambda
关键字定义。它们主要用于需要一个函数对象,但又不值得用 def
语句定义一个完整函数的情况。
语法
Python |
---|
| # arguments 作为传入参数,可以多个,用, 隔开;expression 作为返回结果
lambda arguments: expression
|
示例
简单的匿名函数:
Python |
---|
| double = lambda x: x * 2 # 此处传入参数为 x,表达式 x * 2 作为返回结果
result = double(5) # result is 10
result = (lambda x: x * 2)(5) # 和上一行等价
|
与高阶函数结合使用:
Python |
---|
| def apply_to_list(func, lst):
return [func(x) for x in lst] # 列表推导式,详见 列表list 章节
squared = apply_to_list(lambda x: x ** 2, [1, 2, 3, 4]) # squared is [1, 4, 9, 16]
|
使用场景
排序:Python 的 sorted
函数可以接受一个 key
参数,该参数是一个函数,用于在比较之前对每个元素进行转换。这常常与lambda函数一起使用。
Python |
---|
| sorted_list = sorted([('b', 2), ('a', 1), ('c', 3)], key=lambda x: x[1]) # sorted by second element
|
映射:在列表推导式中使用lambda函数可以简洁地对列表中的每个元素应用某种操作。
回调函数:在异步编程、事件驱动编程等场景中,经常需要将一个函数作为参数传递给另一个函数,以便在某个事件发生时调用它。
高阶函数和 lambda 函数是 Python 函数式编程风格的重要组成部分,它们使代码更加灵活、可重用和简洁。