python装饰器使用实例详解

 更新时间:2019年12月14日 15:17:19   作者:Iceberg_710815  
这篇文章主要介绍了python装饰器使用实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

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

python装饰器的作用就是在不想改变原函数代码的情况下,增加新的功能.主要应用了python闭包的概念,现在用1个小例子说明

import time
def foo():
  time.sleep(1)
  
def bar():
  time.sleep(2)
  
def show_time(f):
  def inner():
    start_time = time.time()
    f()
    end_time = time.time()
    print(end_time-start_time)
  return inner
#show_time(f) is a decoration function
foo = show_time(foo)
bar = show_time(bar)

foo()
bar()

上面的代码定义了两个函数foo()和bar(). 通过装饰器函数show_time(f),在其内部定义了另一个闭包函数inner(),再通过foo=show_time(foo),bar=show_time(bar)语句将foo()和bar()函数同装饰器函数关联起来,从而实现了不改变foo()和bar()函数代码,增加打印程序执行时间的功能.程序的执行结果如下:

1.0011370182
2.00142788887

显然,程序在没有改变原函数的情况下,实现了调用原函数显示程序运行时间的功能.

上面的小程序可以将调用装饰器的语句改成@decoration的形式,效果是造价的,改变后的程序如下,其功能和上面的程序完全相同.

import time

@show_time #foo = show_time(foo)
def foo():
  time.sleep(1)
 
@show_time #bar = show_time(bar)
def bar():
  time.sleep(2)
  
  
def show_time(f):
  def inner():
    start_time = time.time()
    f()
    end_time = time.time()
    print(end_time-start_time)
  return inner
#show_time(f) is a decoration function

foo()
bar()

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

相关文章

  • python引用DLL文件的方法

    python引用DLL文件的方法

    这篇文章主要介绍了python引用DLL文件的方法,涉及Python调用dll文件的相关技巧,需要的朋友可以参考下
    2015-05-05
  • Python中分数的相关使用教程

    Python中分数的相关使用教程

    这篇文章主要介绍了Python中分数的相关使用教程,主要涉及分数的计算、约分等简单操作,是Python学习过程当中的基础,需要的朋友可以参考下
    2015-03-03
  • python包管理工具pip全面解析

    python包管理工具pip全面解析

    这篇文章主要为大家介绍了python包管理工具pip的全面解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • Python栈的实现方法示例【列表、单链表】

    Python栈的实现方法示例【列表、单链表】

    这篇文章主要介绍了Python栈的实现方法,结合实例形式分析了Python基于列表、单链表定义栈的相关操作技巧,需要的朋友可以参考下
    2020-02-02
  • Python数据分析与处理(一)--北京高考分数线统计分析

    Python数据分析与处理(一)--北京高考分数线统计分析

    这篇文章主要介绍了Python数据分析与处理北京高考分数线统计分析,文章问绕Python数据分析与处理相关资料的介绍,展开对北京高考分数线统计分析,需要的小伙伴可以参考一下
    2021-12-12
  • 关于不懂Chromedriver如何配置环境变量问题解决方法

    关于不懂Chromedriver如何配置环境变量问题解决方法

    这篇文章主要介绍了关于不懂Chromedriver如何配置环境变量问题解决方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-06-06
  • Python将阿拉伯数字转换为罗马数字的方法

    Python将阿拉伯数字转换为罗马数字的方法

    这篇文章主要介绍了Python将阿拉伯数字转换为罗马数字的方法,涉及Python字符串转换及流程控制的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • Flask框架 CSRF 保护实现方法详解

    Flask框架 CSRF 保护实现方法详解

    这篇文章主要介绍了Flask框架 CSRF 保护实现方法,结合实例形式详细分析了Flask-WTF针对CSRF攻击的防护相关操作技巧,需要的朋友可以参考下
    2019-10-10
  • Django数据库迁移报错InconsistentMigrationHistory

    Django数据库迁移报错InconsistentMigrationHistory

    最近在使用Django,学习了一下Django数据库迁移,在执行迁移命令时,突然报错,本文就总结了一下原因,感兴趣的小伙伴们可以参考一下
    2021-05-05
  • 列举Python中吸引人的一些特性

    列举Python中吸引人的一些特性

    这篇文章主要介绍了Python中吸引人的一些特性,有助于初学者或者开发者在选择编程语言时用作参考或入门指引,需要的朋友可以参考下
    2015-04-04

最新评论