文章总结: 本文深入阐述Python闭包的核心概念,指出闭包不仅是函数嵌套,而是函数与其定义时外部变量环境的结合体。通过具体代码示例演示了内部函数引用外部变量,且在外部函数结束后仍能访问该变量,有力地证明了闭包具有延长变量生命周期的关键特性。 综合评分: 70 文章分类: 安全培训
Python 闭包(Closure),半懂不懂看这篇文章就行了
原创
Lino
网络技术联盟站
2026年1月4日 18:00 江苏
各位同学,大家好!我是你们的 Python 讲师 Lino。
在 Python 函数体系里,闭包是一个绕不开、却又经常被“半懂不懂”使用的概念。
很多人知道“函数里返回函数就是闭包”,但一旦遇到变量作用域、延迟绑定、真实业务场景,就开始模糊。
从严谨角度来说:
闭包是一个函数,它“记住”了自己定义时的外部变量环境,即使外部函数已经执行完毕,这些变量仍然可以被访问。
这里有三个关键词:
- 函数嵌套
- 外部变量
- 生命周期延续
接下来,我们通过代码验证这三点。
函数嵌套只是前提,不是闭包本身
先看一个最普通的函数嵌套:
def outer(): def inner(): print(“hello”) inner()
outer()
这个代码不是闭包,原因很简单:
- inner() 没有引用 outer() 中的任何变量
- inner() 也没有被返回
闭包 ≠ 函数嵌套
闭包 = 函数 + 外部环境状态
第一个真正的闭包示例
我们稍微改一下:
def outer(): msg = “hello world”
def inner(): print(msg)
return inner
使用方式:
f = outer() f()
输出:
hello world
关键点来了:
- outer() 已经执行结束
- 理论上,msg 这个局部变量应该被销毁
- 但 inner() 仍然能访问 msg
这说明一件事:
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:网络技术联盟站 Lino《Python 闭包(Closure),半懂不懂看这篇文章就行了》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。








评论