【Python基础知识库】Python闭包

    技术2025-12-11  12

    闭包(closure)是函数式编程的重要的语法结构,也是一种组织代码的结构,提高了代码的复用性。简单说,外函数的内部定义了一个内函数,内部函数使用了外部函数的临时变量,并外函数的返回值是内函数的引用。产生闭包需满足的条件:

    必须有一个内嵌函数内嵌函数必须引用外部函数的变量外部函数的返回值必须是内嵌函数

    简单说,闭包就是根据不同的配置信息得到不同的结果,装饰器就是一种闭包,闭包有效的减少了函数所需定义的参数数目。

    闭包的好处: - 取代硬编码中的常量 - 避免使用全局值,并提供某种形式的数据隐藏 - 提供一致的函数签名 - 实现面向对象

    def line_conf(a, b): def line(x): return a*x +b return line line1 = line_conf(1, 1) line2 = line_conf(4, 5) print(line1(5), line2(5)) # (6, 25)

    返回闭包时:返回函数不要引用任何循环变量,或者后续会发生变化的变量。解决方法是在创建一个函数,用函数的参数绑定循环变量当前的值,无论该循环变量后续如何更改,已绑定到函数参数的值不变。

    def count(): def f(j): def g(): return j*j return g fs = [] for i in range(1, 4): fs.append(f(i)) return fs f1, f2, f3 = count() print(f1()) print(f2()) print(f3()) # 结果 ''' 1 4 9 '''
    Processed: 0.009, SQL: 10