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()
相关推荐
Chase_______6 分钟前
Java 基础语言 ① —— Java 运行机制与开发环境:从 javac 到 JVM 全流程解析
java·jvm·python
Robot_Nav11 分钟前
Python 虚拟环境完全指南:venv、virtualenv 与 Conda
python·conda·virtualenv
MATLAB代码顾问14 分钟前
【智能优化】杜鹃搜索算法(CSA)原理与Python实现
开发语言·python
子豪-中国机器人27 分钟前
词云支持的 所有核心效果
python
AC赳赳老秦39 分钟前
数据安全合规:OpenClaw 敏感信息脱敏、操作日志审计、权限精细化管控方案,符合等保要求
网络·数据库·python·安全·web安全·oracle·openclaw
AIFQuant39 分钟前
贵金属 API 避坑:黄金/白银行情接口常见陷阱(数据漂移、断点、延迟)
开发语言·python·websocket·金融·restful·贵金属
财经资讯数据_灵砚智能42 分钟前
基于全球经济类多源新闻的NLP情感分析与数据可视化(日间)2026年5月9日
人工智能·python·信息可视化·自然语言处理·ai编程
shehuiyuelaiyuehao1 小时前
算法21,搜索插入位置
python·算法·leetcode
Volunteer Technology1 小时前
携程智能体项目
人工智能·python·numpy
平安的平安1 小时前
Python实现RAG检索增强生成:让大模型拥有你的私有知识库
开发语言·python