python装饰器的特性原理详解

 更新时间:2019年12月25日 09:24:02   作者:公众号python学习开发  
这篇文章主要介绍了python装饰器的特性原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

这篇文章主要介绍了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你会发现它是有值的。

[<function foo at 0x10bb05ea0>, <function foo1 at 0x10bb05d90>, <function foo3 at 0x10bb05f28>]

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

max(i() for i in data_list)

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

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

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

相关文章

  • Python全栈之基本数据类型

    Python全栈之基本数据类型

    这篇文章主要为大家介绍了Python基本数据类型,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-12-12
  • 教你用Python实现简易版学生信息管理系统(含源码)

    教你用Python实现简易版学生信息管理系统(含源码)

    学生管理信息系统主要用来日常查询学生信息,以及及时更新数据和修改数据.用python实现简单学生管理信息系统不仅可以满足以上要求,也可以巩固之前学习的基础,需要的朋友可以参考下
    2021-06-06
  • 在pycharm中输入import torch报错如何解决

    在pycharm中输入import torch报错如何解决

    这篇文章主要介绍了在pycharm中输入import torch报错如何解决问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • 在pycharm中显示python画的图方法

    在pycharm中显示python画的图方法

    今天小编就为大家分享一篇在pycharm中显示python画的图方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • 简单了解python中的f.b.u.r函数

    简单了解python中的f.b.u.r函数

    这篇文章主要介绍了简单了解python中的f.b.u.r函数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • Python使用scipy保存图片的一些注意点

    Python使用scipy保存图片的一些注意点

    这篇文章主要介绍了Python使用scipy保存图片的一些注意点,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05
  • python实现QQ批量登录功能

    python实现QQ批量登录功能

    这篇文章主要为大家详细介绍了python实现QQ批量登录功能,以及python3.6批量登陆QQ,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-06-06
  • Python matplotlib实现多子图布局

    Python matplotlib实现多子图布局

    多子图布局是指在一个图像中同时显示多个子图,每个子图可以是独立的图形或者是相互关联的图形,下面我们就来了解下matplotlib是如何实现多子图布局的吧
    2023-12-12
  • Tensorflow tf.tile()的用法实例分析

    Tensorflow tf.tile()的用法实例分析

    这篇文章主要介绍了Tensorflow tf.tile()的用法实例分析,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • Python使用Scapy实现构造特殊数据包

    Python使用Scapy实现构造特殊数据包

    Scapy是一款Python库,可用于构建、发送、接收和解析网络数据包,这篇文章主要为大家详细介绍了python如何使用Scapy构造特殊数据包,有需要的可以参考下
    2023-11-11

最新评论