Python高级函数讲解
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 函数和装饰器,希望这些示例能帮助读者更好地理解这些概念。
