当前位置:首页python > 正文

Python 高级:闭包(Closure)

作者:野牛程序员:2025-12-22 11:31:26python阅读 2090
Python 高级:闭包(Closure)
# /*
# Python 高级:闭包(Closure)
# --------------------------------------------------------
# 概念:
# 闭包是一个函数对象,它记住了定义时的作用域环境,即使外部函数已经返回,
# 内部函数依然可以访问外部函数的局部变量。
#
# 特性:
# 1) 内部函数引用了外部函数的变量;
# 2) 外部函数返回内部函数;
# 3) 保留了外部作用域环境,形成“闭合”。
#
# 适用场景:
# - 延迟计算 / 惰性求值
# - 数据封装
# - 函数工厂
# */

# ========================================
# 基本示例
def outer(x):
    y = 10
    def inner(z):
        return x + y + z  # 内部函数引用了外部变量 x 和 y
    return inner  # 返回内部函数

# 创建闭包
closure_func = outer(5)
result = closure_func(3)  # 相当于 5 + 10 + 3 = 18
print("闭包计算结果:", result)

print("-" * 40)

# ========================================
# 查看闭包的内部变量
print("闭包函数 free variables:", closure_func.__closure__)
print("对应值:", [c.cell_contents for c in closure_func.__closure__])

# --------------------------------------------------------
# 要点总结:
# 1) 闭包 = 内部函数 + 外部作用域环境;
# 2) 可访问外部函数的局部变量,即使外部函数已返回;
# 3) 常用于数据封装、延迟执行、函数工厂;
# 4) 可以通过 __closure__ 查看绑定的外部变量。
# */
#
# 闭包计算结果: 18
# ----------------------------------------
# 闭包函数 free variables: (<cell at 0x0000029EDD8C8880:
#                           int object at 0x00007FFC55994A38>,
#                           <cell at 0x0000029EDD8C88B0:
#                           int object at 0x00007FFC55994AD8>)
# 对应值: [5, 10]


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
  • Python 高级:闭包(Closure)
  • 相关推荐

    最新推荐

    热门点击