首页 > 编程笔记 > Python笔记 阅读:8

Python闭包函数的用法(附带实例)

Python 程序中,高阶函数除了可以接收函数作为参数,还可以把函数作为结果返回。下面将构建一个可以通过配置实现打招呼的函数 GreetingConfig()。
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 中创建一个闭包可以归结为以下三点:

相关文章