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

Python高级函数讲解

发布时间:2023-05-31 15:50:14

Python 高级函数是指那些可以接受函数作为参数,或者返回函数作为值的函数。它们是一种强大的工具,能够使程序员更有效地使用和管理代码。

本文将简要介绍一些常用的 Python 高级函数,包括 map(), filter(), reduce(), lambda 函数和装饰器。

1. map()

map() 函数接受一个函数和一个序列作为输入,它将这个函数应用到序列的每一个元素上,并返回一个新的序列,其中包含每个元素的结果。

下面是一个例子,将列表中每个元素平方:

>>> lst = [2, 3, 4, 5]
>>> list(map(lambda x: x**2, lst))
[4, 9, 16, 25]

在以上示例中,lambda 函数接受一个参数 x 并返回 x 的平方。map() 函数将该函数应用于 lst 列表中的每个元素,产生一个新的列表包含每个元素的平方。

2. filter()

filter() 函数也接受一个函数和一个序列作为输入,它将这个函数应用到序列的每一个元素上,并返回一个包含所有满足该函数的元素的新序列。

下面是一个例子,过滤掉列表中的奇数:

>>> lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list(filter(lambda x: x % 2 == 0, lst))
[2, 4, 6, 8]

在以上示例中,lambda 函数接受一个参数 x 并返回 True 或 False。filter() 函数将该函数应用于 lst 列表中的每个元素,如果返回值为 True,则将该元素包含在新的列表中。

3. reduce()

reduce() 函数接受一个函数和一个序列作为输入,它将该函数应用于序列的前两个元素,然后将结果与序列的下一个元素应用于该函数,重复此过程直到序列的末尾。最后,reduce() 函数返回所得到的最后结果。

下面是一个例子,计算列表中所有元素之和:

>>> lst = [1, 2, 3, 4, 5]
>>> from functools import reduce
>>> reduce(lambda x, y: x + y, lst)
15

在以上示例中,lambda 函数接受两个参数 x 和 y 并返回它们的和。reduce() 函数先将该函数应用于 lst 中的前两个元素,得到 1+2=3,然后再将结果和序列的下一个元素 3 应用于该函数,得到 3+3=6,以此类推。

4. lambda 函数

lambda 函数允许我们创建一个匿名函数。它们通常在一个表达式中使用,而且只在该表达式中使用一次。

下面是一个例子,编写一个简单的 lambda 函数,它将两个数相加:

>>> f = lambda x, y: x + y
>>> f(2, 3)
5

在以上示例中,我们创建了一个 lambda 函数 f,它接受两个参数 x 和 y 并返回它们的和。我们然后将这个函数应用于 2 和 3.

5. 装饰器

装饰器是一种用于修改函数或类行为的特殊函数。它们允许我们在不修改原始函数或类的代码的情况下,增加它们的功能。

下面是一个例子,定义一个简单的装饰器,用于打印函数的执行时间:

import time

def timing_decorator(func):
    def wrapper(*args, **kwargs):
        start_time = time.time()
        result = func(*args, **kwargs)
        elapsed_time = time.time() - start_time
        print("{} took {} seconds to execute.".format(func.__name__, elapsed_time))
        return result
    return wrapper

@timing_decorator
def my_function():
    time.sleep(2)

my_function()

在以上示例中,我们定义了一个名为 timing_decorator 的装饰器函数。它接受一个函数 func 作为输入,并返回一个新的函数 wrapper,该函数包装了原始函数 func,并增加了计时器功能。我们使用 @timing_decorator 语法将装饰器应用于 my_function 函数,然后执行该函数。在函数执行前和执行后,timing_decorator 函数将分别打印开始和结束时间,并计算执行时间。

总结

Python 高级函数是一种强大的工具,它们可以使程序员更有效地使用和管理代码。本文介绍了 map(), filter(), reduce(), lambda 函数和装饰器,希望这些示例能帮助读者更好地理解这些概念。