Python 中的函数式编程:从 lambda 到闭包 在 Python 中,函数式编程(Functional Programming,FP)是一种广泛使用的编程范式,其中函数被视为第一类对象,并且其在程序中的使用是一种“表达式求值”的方式。在本文中,我们将介绍一些常用的 FP 技术,从 lambda 到闭包,逐步深入。 Lambda 表达式 在 Python 中,lambda 表达式是一种使用简单语法定义匿名函数的方式。这些函数通常用于创建简单的、一次性的函数对象,或者在函数作为参数传递时。例如,下面的代码定义了一个接受两个参数的 lambda 函数: ``` add = lambda a, b: a + b ``` 这个 lambda 函数将两个参数相加并返回结果。我们可以像下面这样调用它: ``` result = add(3, 4) ``` 这将返回 7。 高阶函数 在 Python 中,函数是第一类对象,因此我们可以将函数作为参数传递给其他函数,或者将函数作为返回值返回。 例如,我们可以定义一个函数,它接受一个函数和一个列表,并通过对列表中的每个元素应用函数来返回新列表。下面是这个函数的实现: ``` def apply(func, lst): return [func(elem) for elem in lst] ``` 我们可以使用这个函数来将列表中的所有元素平方: ``` squares = apply(lambda x: x ** 2, [1, 2, 3, 4]) ``` 这将返回一个新列表,其中包含原始列表中每个元素的平方值。 闭包 闭包是一种特殊的函数,它可以访问其定义所在的作用域中的变量,并在该作用域已经被销毁的情况下继续使用这些变量。使用闭包,我们可以将一些状态“捕获”在函数内部,并在函数调用之间保持它们的值。 下面是一个简单的例子。我们可以定义一个函数,它返回一个新函数,该函数将接受一个整数参数并将其加上初始值: ``` def make_adder(initial_value): def adder(value): return initial_value + value return adder ``` 我们可以使用这个函数来创建一个加法器,其初始值为 10: ``` add_ten = make_adder(10) ``` 现在,我们可以使用这个加法器来将 5 加到 10: ``` result = add_ten(5) ``` 这将返回 15。 在本文中,我们介绍了 Python 中常用的一些函数式编程技术,包括 lambda 表达式、高阶函数和闭包。这些技术可以帮助我们编写简洁、可读性强的代码,并以一种更自然的方式处理函数和数据。