python中的装饰器的真正含义和用法

闭包:

闭包是python中的一个很实用的写法,可以使得用户在函数中调用该函数外的函数的变量,使得该变量常驻于内存中。

闭包函数:

输入是函数,输出也是一个函数。

装饰器的写法是python闭包的语法糖。

面试中经常面试到的调用结果题目:

python 复制代码
# ---encoding:utf-8---
# @Author  : CBAiotAigc
# @Email   :1050100468@qq.com
# @Site    : 
# @File    : 两个装饰器.py
# @Project : PythonUtils
# @Software: PyCharm
def wrapper1(func):
    print("set wrapper1")

    def inner_wrapper1(*args, **kwargs):
        print("进入inner_wrapper1")
        ret = func(*args, **kwargs)
        print("离开inner_wrapper1")
        return ret

    return inner_wrapper1


def wrapper2(func):
    print("set wrapper2")

    def inner_wrapper2(*args, **kwargs):
        print("进入inner_wrapper2")
        ret = func(*args, **kwargs)
        print("离开inner_wrapper2")
        return ret

    return inner_wrapper2


@wrapper1
@wrapper2
def func():
    print("func 函数调用")


if __name__ == '__main__':
    func()

装饰器在第一次调用被装饰函数时进行增强

  • 增强时机? 在第一次调用之前
  • 增强次数?只增强一次

上面代码的调用逻辑分析:

python 复制代码
func = wrapper2(func)
func = wrapper1(func)

func()
相关推荐
Patrick在香港10 分钟前
Python依赖管理从踩坑到选型:pip/poetry/uv四种方案全面实测
开发语言·python·数据分析·scikit-learn·ai编程·pip·uv
circuitsosk27 分钟前
知识问答领域大语言模型设计:对标豆包与DeepSeek的工程实践
人工智能·python·语言模型·自然语言处理·llm·豆包·deepseek
卷无止境27 分钟前
从源码到货架:拆解 Python 打包发布的核心逻辑
后端·python
这就是佬们吗39 分钟前
企业Agent落地为什么需要RAG?
人工智能·python·fastapi
AI视觉网奇1 小时前
glb读取颜色
开发语言·python
半兽先生1 小时前
2026年RAG系统主流开源文档解析工具选型指南:PaddleOCR、MinerU、LiteParse、HunyuanOCR、Apache Tika 全面对比
人工智能·python·机器学习·ai·开源
ZZHow10242 小时前
PyTorch深度学习入门笔记(小土堆)P1-6
人工智能·pytorch·笔记·python·深度学习
郝学胜-神的一滴3 小时前
Python 高级编程 026:内置数据结构之骈文纵论
开发语言·数据结构·python·程序人生·软件工程
DLYSB_10 小时前
存储运维实战:基于 Ceph Event 监听与 Python 适配器的分布式存储健康度物理声光响应架构
运维·ceph·python·报警灯
阿童木写作10 小时前
跨境图片翻译工具多合一,批量图片视频字幕翻译加智能抠图
人工智能·python·音视频·语音识别