python装饰器使用实例详解
作者:Iceberg_710815 发布时间:2021-09-30 15:26:50
标签: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()
来源:https://www.cnblogs.com/iceberg710815/p/11933039.html
0
投稿
猜你喜欢
- 出差到了中国雅虎,这里的风格和淘宝很不一样。和雅虎一比,淘宝的办公环境就是个菜市场,闹哄哄,到处是人,在走道里狂奔乱窜,在每个会议室争得面红
- 优秀的Stoyan Stefanov在他的新书中(《Javascript Patterns》)介绍了很多编写高质量代码的技巧,比如避免使用全
- 1:php地址 http://127.0.0.6/?c=json2:java 输出的结果是[{"i
- python将字符串转换成数组的方法。分享给大家供大家参考。具体实现方法如下:#------------------------------
- 本文实例为大家分享了opencv矿石图片检测矿石数量的具体代码,供大家参考,具体内容如下原始矿石图片此类图片是高躁图,二值化后图像如下采用膨
- 要求编写登录接口: 1. 输入用户名和密码2.认证成功后显示欢迎信息3.用户名输错,提示用户不存在,重新输入(5次错误,提示尝试次数过多,退
- 首先我们一起来看下 Character entities references (HTML Entities)和 Numeric Chara
- JS是一段一段执行的(以<script>标签来分割),执行每一段之前,都有一个“预编译”,预编译干的活是:声明所有var变量(初
- 并发与锁多个线程共享数据的时候,如果数据不进行保护,那么可能出现数据不一致现象,使用锁,信号量、条件锁互斥锁1. 互斥锁,是使用一把锁把代码
- 在pyplot模块中可以使用xlabel()和ylabel()函数设置x轴y轴的标签。这两个函数的使用方法非常相似。使用xlabel()设置
- 1. 使用 fileinput 进行迭代fileinput 模块可以对一个或多个文件中的内容进行迭代、遍历等操作。该模块的 input()
- 如下所示:url = u'http://tieba.baidu.com/f?kw=权利的游戏&ie=utf-8&pn
- 本文实例讲述了python实现对一个完整url进行分割的方法。分享给大家供大家参考。具体分析如下:python对一个完整的url进行分割,将
- 什么是条形图?条形图(bar chart)是用宽度相同的条形的高度或长短来表示数据多少的图形。条形图可以横置或纵置,纵置时也称为柱形图(co
- 我们在做表单的时候经常会使用到这样的结构:<fieldset> <lege
- 求最大公约数是习题中比较常见的类型,下面小编会给大家提供五种比较常见的算法,记得帮忙点个赞哦!一般来说,最大公约数的求法大概有5种方法一:短
- WAP站点,这似乎是一个有点落伍的东西。在诞生之初,它很简陋,只能通过一个叫WML的标记语言来搭建没有任何美感的文字+链接页面。而今,绝大部
- 本文实例讲述了python二分法查找算法实现方法。分享给大家供大家参考,具体如下:二分法查找二分查找又称折半查找,优点是比较次数少,查找速度
- 刚才好无聊,突然想起来之前做一个课表的点子,于是百度了起来。刚开始,我是这样想的:在写微信墙的时候,用到了urllib2【两行代码抓网页】,
- 修改list中所有元素类型:方法一:new = list()a = ['1', '2', '3