Python闭包特性如何使用_函数嵌套与状态保持技巧【教学】

admin 百科 14
Python闭包需满足三条件:函数嵌套、内部函数引用外部局部变量、外部函数返回内部函数对象;它可封装状态、实现装饰器等,但需注意延迟绑定陷阱。

Python闭包特性如何使用_函数嵌套与状态保持技巧【教学】-第1张图片-佛山资讯网

Python闭包的核心在于:内部函数引用了外部函数的局部变量,并且外部函数返回了这个内部函数。它让函数能“记住”自己被定义时的环境,实现轻量级的状态封装。

闭包的基本写法与判断要点

一个函数要构成闭包,必须同时满足三个条件:

  • 存在函数嵌套(内部函数定义在外部函数内部)
  • 内部函数使用了外部函数的局部变量(非全局变量)
  • 外部函数返回了内部函数(注意:不是调用结果,是函数对象本身)

例如:

def make_adder(n):
    def add(x):
        return x + n  # 引用了外部变量 n
    return add  # 返回函数,不是 add(x)
<p>plus_5 = make_adder(5)
print(plus_5(3))  # 输出 8

登录后复制

利用闭包保存状态,替代类的简单场景

当只需要维护少量、单一维度的状态(比如计数器、偏移量、配置参数),闭包比定义类更简洁直观。

立即学习“Python免费学习笔记(深入)”;

比如实现一个自增计数器:

def counter():
    count = 0
    def inc():
        nonlocal count
        count += 1
        return count
    return inc
<p>c = counter()
print(c())  # 1
print(c())  # 2

登录后复制

这里 nonlocal 是关键——它告诉 Python,count 不是局部变量,而是外层函数的变量,允许内部函数修改它。

标签: python app ai

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~