Python中的闭包

什么是闭包?

先给一个简单的定义:

闭包是嵌套函数的一种特殊形式,满足两个核心条件:

  1. 内层函数引用了外层函数的变量(而非全局变量);
  2. 外层函数返回了内层函数(而非执行内层函数)。

闭包的核心价值是:保留外层函数的变量环境,即使外层函数执行完毕,内层函数依然能访问到这些变量。

简单示例

python 复制代码
def outer():
    print("这是外部函数")
    username = "zhangsan"   #局部变量
    def inner():
        print("这是内部函数")
        print("username:", username)
    return inner

res = outer()
res()   #inner()

#运行结果
这是外部函数
这是内部函数
username: zhangsan

闭包的核心应用

Python 装饰器本质就是闭包,比如实现一个 "计算函数执行时间" 的装饰器:

python 复制代码
import time

def timer_decorator(func):
    # 外层函数接收被装饰的函数
    def wrapper(*args, **kwargs):
        # 内层函数封装额外逻辑
        start = time.time()
        result = func(*args, **kwargs)  # 执行原函数
        end = time.time()
        print(f"函数 {func.__name__} 执行耗时:{end - start:.4f} 秒")
        return result
    return wrapper

# 使用装饰器
@timer_decorator
def test_func():
    time.sleep(0.5)

test_func()  # 输出:函数 test_func 执行耗时:0.5001 秒
相关推荐
小巧的砖头13 分钟前
C#会重蹈覆辙吗?系列之2:反射及元数据的性能问题
开发语言·前端·c#
凯瑟琳.奥古斯特16 分钟前
力扣1009补码解法C++实现
开发语言·c++·算法·leetcode·职场和发展
2601_9636459221 分钟前
【2026最新】MATLAB教程(附安装包,非常详细)
开发语言·matlab·信息可视化
闲猫1 小时前
Python 虚拟环境 virtualenv & uvicorn 服务搭建 & FAstAPI 使用
开发语言·python
AI视觉网奇1 小时前
vllm 多卡部署
python
精明的身影2 小时前
网络计划WebApp求解:融合Python与AI决策的项目管理系统
网络·python·web app
AI科技星2 小时前
全域谱分析:无穷维超复数信息场分形统一场论——自然、量子、金融多重分形第一性原理完整体系(中英双语终稿)
人工智能·python·算法·金融·乖乖数学·全域数学
三月不知肉味y2 小时前
2026-07-05-JAVA面试场景题训练
java·开发语言·面试
用户0332126663672 小时前
使用 Python 在 Word 文档中添加批注
python
蜡笔削薪2 小时前
财联万业(杭州)数字科技有限公司能否给代理划定独家经营区域?
大数据·人工智能·python·科技