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()
相关推荐
sleven fung8 分钟前
MinerU与BabelDOC与KTransformers与OpenAI API库
开发语言·python·ai·langchain
小毛驴85017 分钟前
spring-boot-maven-plugin,maven-compiler-plugin 功能对比
java·python·maven
萤萤七悬21 分钟前
【Python笔记】AI帮实现CLI工具-使用argparse.ArgumentParser接收命令参数
开发语言·笔记·python
郑洁文2 小时前
基于Python的Web命令执行漏洞自动化检测系统
前端·python·网络安全·自动化
yingjie1102 小时前
Scanpy vs Seurat 深度对比:Python 与 R 的单细胞分析框架谁更强?
开发语言·python·r语言·生物信息学·单细胞转录组·seurat·scanpy
包子BI大数据2 小时前
3.openclaw小龙虾简单版安装教程
人工智能·python·ai
程序大视界2 小时前
【Python系列课程】Pandas(四):数据统计与排序——describe、sort_values、sample
开发语言·python·pandas
Cthy_hy3 小时前
Python算法竞赛:排列组合核心用法
开发语言·python·算法
C+-C资深大佬3 小时前
在PyCharm中创建虚拟环境的具体步骤是什么?
ide·python·pycharm
Dxy12393102164 小时前
Python Tensor 向量入门:从零理解深度学习的“数据语言“
开发语言·python·深度学习