Python闭包函数的用法(附带实例)
Python 程序中,高阶函数除了可以接收函数作为参数,还可以把函数作为结果返回。下面将构建一个可以通过配置实现打招呼的函数 GreetingConfig()。
闭包(Closure)是词法闭包(Lexical Closure)的简称,是引用自由变量的函数。这个被引用的自由变量将与这个函数一同存在,即使已经离开创造的环境也不例外。
闭包是由函数和与其相关的引用环境组合而成的实体。闭包是函数式编程的重要语法结构。Python 支持这一特性。
由程序的运行结果可知,闭包在运行时可以有多个实例,不同的引用环境(这里就是 prefix 变量)和相同的函数(这里就是 greeting() 函数)组合可以产生不同的实例。
在 Python 中创建一个闭包可以归结为以下三点:
def GreetingConfig(prefix): def greeting(postfix): print(prefix, postfix) return greeting M = GreetingConfig('Good morning !') M('Messi') M('Xavi') A = GreetingConfig('Good afternoon !') A('Messi') A('Xavi')运行结果为:
Good morning ! Messi Good morning ! Xavi Good afternoon ! Messi Good afternoon ! Xavi在程序中,GreetingConfig() 函数嵌套 greeting() 函数,且将 greeting() 函数作为返回值。greeting() 函数访问上一级函数的变量 prefix 时,GreetingConfig() 函数就是闭包。
闭包(Closure)是词法闭包(Lexical Closure)的简称,是引用自由变量的函数。这个被引用的自由变量将与这个函数一同存在,即使已经离开创造的环境也不例外。
闭包是由函数和与其相关的引用环境组合而成的实体。闭包是函数式编程的重要语法结构。Python 支持这一特性。
由程序的运行结果可知,闭包在运行时可以有多个实例,不同的引用环境(这里就是 prefix 变量)和相同的函数(这里就是 greeting() 函数)组合可以产生不同的实例。
在 Python 中创建一个闭包可以归结为以下三点:
- 闭包函数必须有内嵌函数;
- 内嵌函数需要引用上一级函数的变量;
- 闭包函数必须返回内嵌函数。