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()
相关推荐
袁袁袁袁满2 分钟前
基于亮数据MCP与LangGraph集成实现爬虫自动化
爬虫·python·网络爬虫·数据采集·爬虫实战·自动化采集·爬虫案例
非凡ghost5 分钟前
proDAD ReSpeedr:专业视频变速编辑的利器
java·网络·windows·python·音视频·软件需求
Oueii10 分钟前
持续集成/持续部署(CI/CD) for Python
jvm·数据库·python
Jackey_Song_Odd12 分钟前
Part 1:Python语言核心 - 缩进与代码块
开发语言·python
码农时代者19 分钟前
拒绝重复造轮子!开发者如何靠“高质量源码”实现项目高效交付?
java·python·php
郝学胜-神的一滴26 分钟前
深度学习入门基石:PyTorch张量核心技术全解析
人工智能·pytorch·python·深度学习·算法·机器学习
前端小趴菜~时倾35 分钟前
python爬虫学习第二课-流程控制
爬虫·python·学习
放下华子我只抽RuiKe540 分钟前
机器学习终章:集成学习的巅峰与全流程实战复盘
开发语言·人工智能·python·机器学习·数据挖掘·机器人·集成学习
Red丶哞1 小时前
RustFS 使用 S3 Python SDK(Boto3)文档
开发语言·python
铁打的阿秀1 小时前
Java 打印pdf添加水印实现
java·python·pdf