Python学习之装饰器

装饰器是一个函数

装饰器具有一个功能。

装饰器像给其他函数穿外套:今天穿"日志外套",明天换"缓存外套",业务本体不动分毫。这就是"**非侵入式扩展"**的威力。

一个例子

日志记录功能的装饰器

python 复制代码
import functools
import time

def log_call(func):
    @functools.wraps(func)
    def wrapper(*args, **kwargs):
        ts = time.strftime("%Y-%m-%d %H:%M:%S")
        print(f"[{ts}] CALL {func.__name__} args={args} kwargs={kwargs}")
        result = func(*args, **kwargs)
        print(f"[{ts}] RET  {func.__name__} -> {result}")
        return result
    return wrapper

@log_call
def add(a, b):
    return a + b

add(3,5)

Q:从数学复合函数角度,如何理解装饰器的闭包?

  • 内层函数是被包装的函数,是被调用的函数
  • 外层函数是装饰器

    程序是记忆外部(提供参数),执行内部(本质逻辑)
    其实和数学复合函数不一样。
    复合函数是有buff叠加,而装饰器是在保有原效果基础上增添新功能(装饰器的功能)
    就是房子刷漆,变漂亮了。

相关推荐
爱睡懒觉的焦糖玛奇朵2 小时前
【从视频到数据集:焦糖玛奇朵的魔法工具使用说明】
人工智能·python·深度学习·学习·算法·yolo·音视频
潜创微科技2 小时前
IT6520:USB‑C 转 MIPI 芯片方案 4K@120Hz 高清显示
c语言·开发语言
夏天想3 小时前
人类将从“执行者“变为“总导演”,学习Ai知识
人工智能·学习
yangshicong3 小时前
第11章:结构化输出与数据提取 —— 让 AI 直接返回你想要的数据格式
数据库·人工智能·redis·python·langchain·ai编程
言之。3 小时前
【Python】免费的中文 AI 配音方案
开发语言·人工智能·python
Warson_L3 小时前
python dict key详解
python
天天进步20153 小时前
Python全栈项目:从零手操一个高性能 API 网关
开发语言·python
晓梦林3 小时前
Baji1靶场学习笔记
笔记·学习
Java面试题总结3 小时前
java高频面试题(2026最新)
java·开发语言·jvm·数据库·spring·缓存
希冀1234 小时前
【CSS学习第十一篇】
前端·css·学习