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()
相关推荐
言之。1 小时前
Dropbear远程连接
python
dhdjjsjs2 小时前
Day34 PythonStudy
python
一个java开发2 小时前
Dask 配置文件加载机制说明
大数据·python
bj_zhb2 小时前
图片的base64表示
python·llm
飞Link2 小时前
【Django】Django 调用外部 Python 程序的完整指南
后端·python·django·sqlite
周杰伦_Jay2 小时前
【Java集合与线程池深度解析】底层原理+实战选型+避坑指南(附代码)
java·开发语言·python
一人の梅雨2 小时前
淘宝关键字搜索接口深度解析:从动态策略适配到商业数据重构
python·重构
道19933 小时前
PyTorch 从小白到高级进阶教程[工业级示例](三)
人工智能·pytorch·python
测试人社区-千羽3 小时前
智能测试的终极形态:从自动化到自主化的范式变革
运维·人工智能·python·opencv·测试工具·自动化·开源软件
锐学AI3 小时前
从零开始学MCP(八)- 构建一个MCP server
人工智能·python