Python闭包(Closure),半懂不懂看这篇文章就行了

admin 2026-01-05 18:13:51 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文深入阐述Python闭包的核心概念,指出闭包不仅是函数嵌套,而是函数与其定义时外部变量环境的结合体。通过具体代码示例演示了内部函数引用外部变量,且在外部函数结束后仍能访问该变量,有力地证明了闭包具有延长变量生命周期的关键特性。 综合评分: 70 文章分类: 安全培训


cover_image

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),半懂不懂看这篇文章就行了》

评论:0   参与:  0