欢迎访问宙启技术站
智能推送

Python高阶函数及使用示例

发布时间:2023-06-19 05:44:35

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 中非常有用和广泛使用的概念。通过使用高阶函数,可以使代码更加简洁、可读和可重用。在实际开发中,使用高阶函数可以大大提高开发效率和代码质量。