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 秒
相关推荐
WangN21 分钟前
【通识】宇树G1_29DOF速度跟踪训练—逐章学习手册
人工智能·python·学习·机器人·具身智能
装不满的克莱因瓶13 分钟前
掌握语义分割经典模型 FCN——从像素分类到端到端分割的奠基之作
人工智能·python·深度学习·算法·机器学习·分类·数据挖掘
黄毛火烧雪下16 分钟前
Java 基础笔记:文件、递归与字符编码
java·开发语言·笔记
noravinsc25 分钟前
关于PEP8
python
DXM052133 分钟前
第14期|高阶分割模型:Transformer/SegFormer遥感应用
人工智能·python·神经网络·算法·计算机视觉·cnn·ageo
糖果店的幽灵34 分钟前
软件测试接口测试从入门到精通:Python接口自动化 - pytest测试框架
软件测试·python·功能测试·自动化·pytest·接口测试
swordbob39 分钟前
CAP 定理:为什么不能同时实现 C、A、P?
开发语言·后端·spring
疯狂成瘾者39 分钟前
Java 常用工具包 java.util
java·开发语言·windows
枫叶丹440 分钟前
【HarmonyOS 6.0】MDM Kit 新特性:PC/2in1设备无锁屏密码重启自动解锁能力详解
开发语言·华为·harmonyos
程序员龙叔1 小时前
从 0 开始学习 AI 测试 - 从接口测试来教你如何用 AI 来生成自动化测试代码
自动化测试·软件测试·python·软件测试工程师·测试工具·性能测试·ai测试