博客
关于我
python装饰器@深度加工(三分钟读懂)
阅读量:348 次
发布时间:2019-03-04

本文共 928 字,大约阅读时间需要 3 分钟。

在不修改原函数的情况下,如何对函数进行扩展是一个非常有趣的技术话题。通过使用装饰器(Decorator)的方式,我们可以在不修改原函数的情况下,给函数添加新的功能或行为。这种方式不仅简化了函数的扩展过程,还允许我们在同一个函数上同时添加多个装饰器,这些装饰器将从内向外依次作用于函数。

装饰器在函数定义时,可以通过@符号来指定。一个函数可以同时使用多个装饰器,这意味着在调用函数时,装饰器将按照从内到外的顺序依次执行。例如,函数fn1和fn2各自定义了一个内部函数,并通过返回这个内部函数来作为装饰器。这样,当我们在fn3上使用@fn1和@fn2装饰器时,fn3实际上将等同于fn1(fn2(fn3))。

通过这种方式,我们可以轻松地为函数添加多层功能。例如,在fn3中,我们可以先添加鸡肉的功能,然后通过@fn1装饰器添加面包的功能;同样地,fn4中我们可以添加牛肉的功能。

让我们来看一个具体的示例:

def fn1(x):    def bread(*args, **kwargs):        print('上层面包')        y = x(*args, **kwargs)        print('下层面包')        return y    return breaddef fn2(q):    def vegetables(*args, **kwargs):        print('上层蔬菜')        z = q(*args, **kwargs)        print('下层蔬菜')        return z    return vegetables@fn1  # 添加面包@fn2  # 添加蔬菜def fn3():    print('鸡肉')@fn1  # 添加面包def fn4():    print('牛肉')

当我们调用fn3()时,输出将是:

上层面包上层蔬菜牛肉下层蔬菜下层面包

而当我们调用fn4()时,输出将是:

上层面包鸡肉下层面包

通过这种方式,我们可以轻松地为函数添加多层功能,而无需修改原函数的代码。这种方法在软件开发中非常有用,可以帮助我们逐步构建复杂的功能模块。

转载地址:http://ozke.baihongyu.com/

你可能感兴趣的文章
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_实现数据插入数据到目标数据库_实际操作03---大数据之Nifi工作笔记0042
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_生成插入Sql语句_实际操作02---大数据之Nifi工作笔记0041
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_03_来吧用NIFI实现_数据分页获取功能---大数据之Nifi工作笔记0038
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_不带分页处理_01_QueryDatabaseTable获取数据_原0036---大数据之Nifi工作笔记0064
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_无分页功能_02_转换数据_分割数据_提取JSON数据_替换拼接SQL_添加分页---大数据之Nifi工作笔记0037
查看>>
NIFI从PostGresql中离线读取数据再导入到MySql中_带有数据分页获取功能_不带分页不能用_NIFI资料太少了---大数据之Nifi工作笔记0039
查看>>
nifi使用过程-常见问题-以及入门总结---大数据之Nifi工作笔记0012
查看>>
NIFI分页获取Mysql数据_导入到Hbase中_并可通过phoenix客户端查询_含金量很高的一篇_搞了好久_实际操作05---大数据之Nifi工作笔记0045
查看>>
NIFI分页获取Postgresql数据到Hbase中_实际操作---大数据之Nifi工作笔记0049
查看>>
NIFI同步MySql数据_到SqlServer_错误_驱动程序无法通过使用安全套接字层(SSL)加密与SQL Server_Navicat连接SqlServer---大数据之Nifi工作笔记0047
查看>>
NIFI同步MySql数据源数据_到原始库hbase_同时对数据进行实时分析处理_同步到清洗库_实际操作06---大数据之Nifi工作笔记0046
查看>>
Nifi同步过程中报错create_time字段找不到_实际目标表和源表中没有这个字段---大数据之Nifi工作笔记0066
查看>>
NIFI大数据进阶_FlowFile拓扑_对FlowFile内容和属性的修改删除添加_介绍和描述_以及实际操作---大数据之Nifi工作笔记0023
查看>>
NIFI大数据进阶_FlowFile生成器_GenerateFlowFile处理器_ReplaceText处理器_处理器介绍_处理过程说明---大数据之Nifi工作笔记0019
查看>>
NIFI大数据进阶_FlowFile生成器_GenerateFlowFile处理器_ReplaceText处理器_实际操作---大数据之Nifi工作笔记0020
查看>>
NIFI大数据进阶_Json内容转换为Hive支持的文本格式_操作方法说明_01_EvaluteJsonPath处理器---大数据之Nifi工作笔记0031
查看>>
NIFI大数据进阶_Kafka使用相关说明_实际操作Kafka消费者处理器_来消费kafka数据---大数据之Nifi工作笔记0037
查看>>
NIFI大数据进阶_Kafka使用相关说明_实际操作Kafka生产者---大数据之Nifi工作笔记0036
查看>>
NIFI大数据进阶_NIFI的模板和组的使用-介绍和实际操作_创建组_嵌套组_模板创建下载_导入---大数据之Nifi工作笔记0022
查看>>
NIFI大数据进阶_NIFI监控功能实际操作_Summary查看系统和处理器运行情况_viewDataProvenance查看_---大数据之Nifi工作笔记0026
查看>>