python装饰器使用实例详解


Posted in Python onDecember 14, 2019

这篇文章主要介绍了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 相关文章推荐
将图片文件嵌入到wxpython代码中的实现方法
Aug 11 Python
Python代码解决RenderView窗口not found问题
Aug 28 Python
Python实现感知器模型、两层神经网络
Dec 19 Python
python通过伪装头部数据抵抗反爬虫的实例
May 07 Python
对pandas中to_dict的用法详解
Jun 05 Python
修改默认的pip版本为对应python2.7的方法
Nov 06 Python
python 使用值来排序一个字典的方法
Nov 16 Python
Pycharm pyuic5实现将ui文件转为py文件,让UI界面成功显示
Apr 08 Python
三步解决python PermissionError: [WinError 5]拒绝访问的情况
Apr 22 Python
基于Python实现下载网易音乐代码实例
Aug 10 Python
python海龟绘图之画国旗实例代码
Nov 11 Python
PyQt5爬取12306车票信息程序的实现
May 14 Python
python函数不定长参数使用方法解析
Dec 14 #Python
python如何实现不用装饰器实现登陆器小程序
Dec 14 #Python
python模块和包的应用BASE_PATH使用解析
Dec 14 #Python
python socket通信编程实现文件上传代码实例
Dec 14 #Python
python如何使用socketserver模块实现并发聊天
Dec 14 #Python
python paramiko远程服务器终端操作过程解析
Dec 14 #Python
安装PyInstaller失败问题解决
Dec 14 #Python
You might like
在普通HTTP上安全地传输密码
2007/07/21 PHP
利用PHP实现智能文件类型检测的实现代码
2011/08/02 PHP
php实现插入排序
2015/03/29 PHP
php生成静态html页面的方法(2种方法)
2015/09/14 PHP
简单解析PHP程序的运行流程
2016/06/23 PHP
JS获取IUSR_机器名和IWAM_机器名帐号的密码
2006/12/06 Javascript
JavaScript获取GridView选择的行内容
2009/04/14 Javascript
JavaScript 解析读取XML文档 实例代码
2009/07/07 Javascript
理解Javascript_15_作用域分配与变量访问规则,再送个闭包
2010/10/20 Javascript
关于JavaScript中的关联数组分析
2013/04/09 Javascript
首页图片漂浮效果示例代码
2014/06/05 Javascript
修改js confirm alert 提示框文字的简单实例
2016/06/10 Javascript
JavaScript中的splice方法用法详解
2016/07/20 Javascript
AngularJS ng-mousedown 指令
2016/08/02 Javascript
Node.js获取前端ajax提交的request信息
2017/02/20 Javascript
深入理解Vue 的条件渲染和列表渲染
2017/09/01 Javascript
详解vue-cli 脚手架 安装
2019/04/16 Javascript
原生JavaScript实现轮播图
2021/01/10 Javascript
Python使用shelve模块实现简单数据存储的方法
2015/05/20 Python
python爬虫获取多页天涯帖子
2018/02/23 Python
redis之django-redis的简单缓存使用
2018/06/07 Python
如何用Python合并lmdb文件
2018/07/02 Python
浅析python的优势和不足之处
2018/11/20 Python
Python实现随机创建电话号码的方法示例
2018/12/07 Python
解决python3.5 正常安装 却不能直接使用Tkinter包的问题
2019/02/22 Python
使用Python进行体育竞技分析(预测球队成绩)
2019/05/16 Python
python查找特定名称文件并按序号、文件名分行打印输出的方法
2020/04/24 Python
CSS3中:nth-child和:nth-of-type的区别深入理解
2014/03/10 HTML / CSS
经济管理专业毕业生推荐信
2013/11/11 职场文书
大学团支书的自我评价分享
2013/12/14 职场文书
回门宴父母答谢词
2014/01/26 职场文书
远程研修随笔感言
2014/02/10 职场文书
简易版租房协议书范本
2014/10/13 职场文书
教师个人自我评价
2015/03/04 职场文书
Python实现滑雪小游戏
2021/09/25 Python
win10电脑关机快捷键是哪个 win10快速关机的几种方法
2022/08/14 数码科技