Python高阶函数及使用示例
Python高阶函数及使用示例
什么是高阶函数?
在 Python 中,函数可以作为参数传递给其他函数,或者函数可以返回其他函数。这就是所谓的高阶函数:接受一个或多个函数作为参数,并返回一个新函数。
Python 中的高阶函数通常包括以下三种:
1. 接受一个或多个函数作为参数的函数,例如 map()、filter() 和 reduce()。
2. 返回函数的函数,例如装饰器。
3. 既接受函数作为参数,又返回函数的函数。
使用高阶函数的好处
使用高阶函数有以下好处:
1. 可以提高代码重用性。
2. 可以抽象出通用的算法或逻辑,使代码更加简洁。
3. 可以使代码更具可读性。
示例1:map() 函数
map() 函数用来对序列中的每个元素应用一个函数,然后返回一个由原序列元素应用函数后的结果所组成的新序列。
例如,将一个列表中的所有数平方:
lst = [1, 2, 3, 4, 5] squared_lst = map(lambda x: x**2, lst) print(list(squared_lst))
输出结果如下:
[1, 4, 9, 16, 25]
示例2:filter() 函数
filter() 函数用来过滤序列中的元素,返回一个由符合条件的元素组成的新序列。
例如,从一个列表中过滤出所有偶数:
lst = [1, 2, 3, 4, 5] even_lst = filter(lambda x: x%2 == 0, lst) print(list(even_lst))
输出结果如下:
[2, 4]
示例3:reduce() 函数
reduce() 函数对一个序列进行累积操作,返回一个累积的结果。
例如,对一个列表中的数进行累加:
from functools import reduce lst = [1, 2, 3, 4, 5] sum_lst = reduce(lambda x, y: x+y, lst) print(sum_lst)
输出结果如下:
15
示例4:装饰器
装饰器是一个返回函数的函数,用于修改其他函数的功能。
例如,编写一个装饰器,打印函数的执行时间:
import time
def timer(func):
def wrapper(*args, **kwargs):
start = time.time()
result = func(*args, **kwargs)
end = time.time()
print(f"{func.__name__} 执行时间为 {end-start:.5f} 秒")
return result
return wrapper
@timer
def func(n):
for i in range(n):
pass
func(1000000)
输出结果如下:
func 执行时间为 0.09499 秒
示例5:函数作为参数和返回值
在下面的示例中,call_twice() 函数接受一个函数作为参数,并返回一个新函数,新函数将调用原函数两次。
def call_twice(func):
def wrapper(*args, **kwargs):
func(*args, **kwargs)
func(*args, **kwargs)
return wrapper
def print_hello():
print("hello")
call_twice(print_hello)()
输出结果如下:
hello hello
结论
高阶函数是 Python 中非常有用和广泛使用的概念。通过使用高阶函数,可以使代码更加简洁、可读和可重用。在实际开发中,使用高阶函数可以大大提高开发效率和代码质量。
