这篇文章主要介绍了python装饰器的特性原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

今天发现了装饰器的另一种用法,下面就先上代码:

data_list = []

def data_item(func):

data_list.append(func)

return func

@data_item

def foo():

return 1

@data_item

def foo1():

return 2

@data_item

def foo3():

return 3

def max_item():

result = max(i() for i in data_list)

return result

if __name__ == '__main__':

item = max_item()

print(item)

代码很简单就是,定义三个foo开头的函数,每个foo函数输出不一样的数字,都通过装饰器data_item进行修饰,最后通过max_item函数,执行一系列逻辑获取结果。

这里有个容易被忽略的点,那就是装饰器实际是在执行 max_item()之前就执行了。

所以,如果你打印下data_list你会发现它是有值的。

[, , ]

即列表里面已经有三个被装饰器修饰的函数了,然后在

max(i() for i in data_list)

的i()阶段这三个函数执行了,得到了结果(1,2,3),然后最后取它们的max值即3。

什么场景会用到呢,一般对于传入一个值然后多种处理方案,选择其中最佳方案的时候可以考虑使用这种方法。

emmm,装饰器还是挺有意思的。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

本文标题: python装饰器的特性原理详解

本文地址: http://www.cppcns.com/jiaoben/python/295185.html

python装饰器性能_python装饰器的特性原理详解相关推荐

  1. python是基于什么原理_Python基于class()实现面向对象原理详解

    首先,类是一个集合,包含了数据,操作描述的一个抽象集合 你可以首先只把类当做一个容器来使用 class Cycle: def __init__(self,r): self.pi=3.14 self.r ...

  2. python 编码解码原理_Python JSON编解码方式原理详解

    这篇文章主要介绍了Python JSON编解码方式原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 概念 JSON(JavaScript Ob ...

  3. python属性使用教程_Python对象的属性访问过程详解

    只想回答一个问题: 当编译器要读取obj.field时, 发生了什么? 看似简单的属性访问, 其过程还蛮曲折的. 总共有以下几个step: 1. 如果obj 本身(一个instance )有这个属性, ...

  4. python decimal类型转化_python中的decimal类型转换实例详解

    [Python标准库]decimal--定点数和浮点数的数学运算 作用:使用定点数和浮点数的小数运算. Python 版本:2.4 及以后版本 decimal 模块实现了定点和浮点算术运算符,使用的是 ...

  5. python 自动化办公 案例_python自动化工具之pywinauto实例详解

    python自动化工具之pywinauto实例详解 来源:中文源码网 浏览: 次 日期:2019年11月5日 [下载文档: python自动化工具之pywinauto实例详解.txt ] (友情提示: ...

  6. python dataframe loc函数_python pandas.DataFrame.loc函数使用详解

    官方函数 DataFrame.loc Access a group of rows and columns by label(s) or a boolean array. .loc[] is prim ...

  7. python迭代器创建序列_Python 中迭代器与生成器实例详解

    Python 中迭代器与生成器实例详解 本文通过针对不同应用场景及其解决方案的方式,总结了Python中迭代器与生成器的一些相关知识,具体如下: 1.手动遍历迭代器 应用场景:想遍历一个可迭代对象中的 ...

  8. python迭代器与生成器_python的迭代器与生成器实例详解

    本文以实例详解了python的迭代器与生成器,具体如下所示: 1. 迭代器概述: 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后 ...

  9. python布尔类型运算_Python对象类型及其运算方法(详解)

    基本要点: 程序中储存的所有数据都是对象(可变对象:值可以修改 不可变对象:值不可修改) 每个对象都有一个身份.一个类型.一个值 例: >>> a1 = 'abc' >> ...

最新文章

  1. 无人驾驶定位与贝叶斯滤波
  2. 正则表达式-匹配数字范围
  3. HADOOP2.5.0_64安装日志
  4. javame_JavaME:Google静态地图API
  5. 7价 半导体掺杂_掺杂工艺(一)
  6. 半导体八大工艺流程图_大国重器,国芯基石 半导体离子注入机行业研究报告...
  7. 易语言取CPU序列号特征字
  8. [经典力学]牛顿自然哲学的数学原理论文解读
  9. 前端之路--第三周学习
  10. 技巧8——linux假死现象要知道
  11. 无线网络WPA-PSK加密破解
  12. PTA:输出较大或较小值(c++,函数模板)
  13. 课程设计题十二:电子密码锁
  14. python数学编程 pdf,Python数学编程
  15. 如何应对redis缓存的击穿、穿透和雪崩
  16. 页面之间数据调转传输
  17. u盘图片损坏怎么恢复
  18. 毫米波雷达技术应用,飞睿科技人体存在感应检测模块
  19. 【设计模式】工厂系列
  20. Presto的Spill机制

热门文章

  1. 安卓程序员都懂:如何用Espresso对UI界面测试?
  2. mysql 案例~ 主从复制转化为级联复制
  3. dom4j解析xml的简单实用
  4. Datahub Python SDK入门手册
  5. mysql5.5和5.6版本间的坑
  6. 利用文件扫描符恢复数据库.txt
  7. unset MAILCHECK
  8. Hadoop1.9安装配置
  9. 如何查看本机安装的python支持哪种.whl文件
  10. 理解C#中的里氏转换