首页 > 编程语言 >python --多个叠加装饰器

python --多个叠加装饰器

时间:2024-04-18 15:23:39浏览次数:27  
标签:wrapper3 index 叠加 return wrapper2 python wrapper1 -- def

def deco1(func1):
    def wrapper1(*args,**kwargs):
        print("运行deco1_wrapper1")
        res1=func1(*args,**kwargs)
        return res1
    return wrapper1

def deco2(func2):
    def wrapper2(*args,**kwargs):
        print("运行deco2_wrapper2")
        res2=func2(*args,**kwargs)
        return res2
    return wrapper2

def deco3(x):
    def outter3(func3):
        def wrapper3(*args,**kwargs):
            print("运行deco3_wrapper3")
            res3=func3(*args,**kwargs)
            return res3
        return wrapper3
    return outter3
@deco1 #index=deco1(wrapper2的内存地址) ===> index=wrapper1 的内存地址
@deco2 #index=deco2(wrapper3的内存地址) ===> index=wrapper2 的内存地址
@deco3(1)   #===>@outter3===> index=outter3(index) ===>index=wrapper3 的内存地址
def index(x,y):
    print("from index %s,%s" %(x,y))
index(1,2)

'''执行顺序是自上而下的,即wrapper1 --> wrapper2--> wrapper3'''
/usr/local/bin/python3.8 /Users/futantan/PycharmProjects/S14/函数的学习/迭代器.py
运行deco1_wrapper1
运行deco2_wrapper2
运行deco3_wrapper3
from index 1,2

Process finished with exit code 0

 

标签:wrapper3,index,叠加,return,wrapper2,python,wrapper1,--,def
From: https://www.cnblogs.com/clairedandan/p/18143577

相关文章

  • FICO内部订单详细解析
    内部订单是用来对企业内部某项工作或者任务编制计划、归集成本、结算的载体。比如市场推广活动、内部团队活动、研发项目、投资项目、在建工程项目等。内部订单需要区别于销售订单、采购订单和生产订单。销售订单和采购订单是企业与外部单位以合同或者契约为纽带,在执行交易后,最终......
  • NL2SQL进阶系列(5):论文解读业界前沿方案(DIN-SQL、C3-SQL、DAIL-SQL)、新一代数据集BIRD
    NL2SQL进阶系列(5):论文解读业界前沿方案(DIN-SQL、C3-SQL、DAIL-SQL)、新一代数据集BIRD-SQL解读NL2SQL基础系列(1):业界顶尖排行榜、权威测评数据集及LLM大模型(SpidervsBIRD)全面对比优劣分析[Text2SQL、Text2DSL]NL2SQL基础系列(2):主流大模型与微调方法精选集,Text2SQL经典算法技......
  • git
    Git:版本控制1.本地2.集中3.分布式如果之前有git先卸载:直接反安装删除git的环境变量之后一直nextgit的配置:所有的配置文件都保存在本地gitconfig-l(关于git的所有的配置)gitconfig--system--list(系统配置)gitconfig--gaobal--list(y用户名密码)git的工作原理git基本理论(核......
  • LeetCode 面试经典150题---008
    ####151.反转字符串中的单词给你一个字符串s,请你反转字符串中单词的顺序。单词是由非空格字符组成的字符串。s中使用至少一个空格将字符串中的单词分隔开。返回单词顺序颠倒且单词之间用单个空格连接的结果字符串。注意:输入字符串s中可能会存在前导空格、尾随空格......
  • 数据加密技术在数据安全中的作用
    PrimiHub一款由密码学专家团队打造的开源隐私计算平台,专注于分享数据安全、密码学、联邦学习、同态加密等隐私计算领域的技术和内容。随着信息技术的飞速发展,数据已成为现代社会最宝贵的资产之一。然而,数据的快速增长也带来了安全风险,包括数据泄露、篡改和滥用等。数据加密技术......
  • 生态短讯 | Tapdata 与 TDengine 完成产品兼容性互认证,打造物联网实时数据生态
    近月,深圳钛铂数据有限公司(以下简称钛铂数据)自主研发的实时数据平台(TapdataLiveDataPlatform)与北京涛思数据科技有限公司(以下简称涛思数据)自主研发的大数据平台TDengine,已经完成了产品兼容性互认证。经双方团队共同严格测试,TapdataLiveDataPlatform与TDengine共同稳定......
  • https://blog.csdn.net/qq_64314976/article/details/125843147
    importjava.awt.FlowLayout;importjava.awt.GridLayout;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.ButtonGroup;importjavax.swing.JButton;importjavax.swing.JCheckBox;importjavax.swing.JComboBox;importjavax.s......
  • 如何在HTML中使用JavaScript:从基础到高级的全面指南!
    JavaScript是一种轻量级的编程语言,通常用于网页开发,以增强用户界面的交互性和动态性。然而在HTML中,有多种方法可以嵌入和使用JavaScript代码。本文就带大家深入了解如何在HTML中使用JavaScript。一、使用script标签要在HTML中使用JavaScript,我们需要使用<script>标签。这个标......
  • 智能指针
    芝士wa2024.4.8参考视频链接概述C++的指针包括两种:原始指针智能指针:unique_ptr,shared_ptr,weak_ptr智能指针是原始指针的封装,其优点是会自动分配内存,不用担心潜在的内存泄漏。各种指针中,最常用的是裸指针,其次是unique_ptr和shared_ptrweak_ptr是shared_ptr的一个补充......
  • TreeComboBox 【用户控件】
    效果如下纯粹用用户控件实现缺点:1、展开子项时候,文本框会初始化为第一项,不过在选择后就会设置成选中的选择的项。          2、只有在文本框可编辑状态下,才可以正常运行。          3、设置复杂,不太容易使用。   步骤1、设置Combobox。TreeComb......