高阶函数
- 在Python中,函数作为参数传递给另一个函数,这种特性称为高阶函数(Higher-order function)。
- 高阶函数可以接受一个或多个函数作为输入并返回一个新函数。
- 高阶函数是能够接收或返回其他函数的函数,是函数式编程的一种高度抽象的编程范式。
- 高阶函数用例:
def add(x, y):
return x + y
def multiply(x, y):
return x * y
def apply_operation(operation, x, y):
return operation(x, y)
result1 = apply_operation(add, 3, 4) # 结果为7
result2 = apply_operation(multiply, 3, 4) # 结果为12
print(result1)
print(result2)
此例中,apply_operation函数接受一个名为operation的函数作为参数,以及两个整数x和y。然后,它调用operation函数并将x和y作为参数传递。将不同的操作作为参数传递给apply_operation函数,从而实现灵活的计算。
- 高阶函数的特性:
- 函数作为参数:可以将函数作为参数传递给另一个函数,这样就可以根据不同的需求传递不同的函数来实现不同的功能。
- 函数作为返回值:一个函数可以返回另一个函数,这样的设计可以用来实现一些特殊的编程模式,比如闭包和装饰器。
lambda表达式
- lambda表达式是一种匿名函数,用于创建简单的、单行的函数对象。通常用于需要传递一个简单函数作为参数的场景中。
- lambda表达式的定义格式为:lambda 参数列表: 表达式。其中,参数列表可以有多个参数,用逗号分隔;表达式是一个单一的表达式,不能包含复杂的语句或逻辑。
- 在异步编程中,可以使用lambda表达式来定义回调函数。
- 在排序时,可以使用lambda表达式来指定排序规则。
lambda表达式的语法特点:
简洁性: | lambda表达式是一种简洁的函数定义方式,可以用来快速定义简单的函数。 |
匿名性: | lambda表达式没有函数名,因此也被称为匿名函数。 |
限制性: | lambda表达式只能包含一个表达式,不能包含复杂的语句或逻辑。 |
灵活性: | 可以在任何需要函数对象的地方使用lambda,如排序、映射等高阶函数中。 |
即时计算: | lambda表达式通常在定义后立即执行,适用于需要即时结果的场景。 |
- lambda表达式用例:
# 定义一个lambda表达式,计算两个数的和
add = lambda x, y: x + y
# 调用lambda表达式
result = add(3, 4)
print(result) # 输出7
- 列表排序lambda表达式用例:
numbers = [3, 1, 4, 2]
sorted_numbers = sorted(numbers, key=lambda x: x % 2)
print(sorted_numbers) # 输出 [1, 3, 2, 4]
- 计算两数和lambda表达式用例:
add = lambda x, y: x + y
result = add(3, 4)
print(result) # 输出 7
- 过滤列表偶数lambda表达式用例:
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers) # 输出 [2, 4, 6, 8, 10]