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中的函数参数传递问题

    Python中的函数参数传递问题

    这篇文章主要介绍了Python中的函数参数传递问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • python 协程并发数控制

    python 协程并发数控制

    这篇文章主要介绍了python 协程并发数控制,文章基于python的相关资料展开对主题烦人详细内容介绍,需要的小伙伴可以参考一下
    2022-05-05
  • Python实现PowerPoint演示文稿到图片的批量转换

    Python实现PowerPoint演示文稿到图片的批量转换

    PowerPoint演示文稿作为展示创意、分享知识和表达观点的重要工具,被广泛应用于教育、商务汇报及个人项目展示等领域,用Python代码可以高效地实现PowerPoint演示文稿到图片的批量转换,从而提升工作效率,文本将介绍如何使用Python实现PowerPoint演示文稿到图片的转换
    2024-06-06
  • Python 基于FIR实现Hilbert滤波器求信号包络详解

    Python 基于FIR实现Hilbert滤波器求信号包络详解

    今天小编就为大家分享一篇Python 基于FIR实现Hilbert滤波器求信号包络详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • Python字符串和正则表达式中的反斜杠(''\'')问题详解

    Python字符串和正则表达式中的反斜杠(''\'')问题详解

    在本篇文章里小编给大家整理的是关于Python字符串和正则表达式中的反斜杠('\')问题以及相关知识点,有需要的朋友们可以学习下。
    2019-09-09
  • Python+django实现文件上传

    Python+django实现文件上传

    本系列以可操作性为主,介绍如何通过django web框架来实现一些简单的功能。每一篇文章都具有完整性和独立性。使用新手在动手做的过程中体会web开发的过程,过程中细节请参考相关文档。
    2016-01-01
  • Python 3.7新功能之dataclass装饰器详解

    Python 3.7新功能之dataclass装饰器详解

    这篇文章主要给大家介绍了关于Python 3.7新功能之dataclass装饰器的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-04-04
  • Python之eval()函数危险性浅析

    Python之eval()函数危险性浅析

    这篇文章主要介绍了Python之eval()函数危险性浅析,需要的朋友可以参考下
    2014-07-07
  • Python实现简单层次聚类算法以及可视化

    Python实现简单层次聚类算法以及可视化

    这篇文章主要为大家详细介绍了Python实现简单层次聚类算法以及可视化,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-03-03
  • python将一组数分成每3个一组的实例

    python将一组数分成每3个一组的实例

    今天小编就为大家分享一篇python将一组数分成每3个一组的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-11-11

最新评论