博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python装饰器示例
阅读量:6614 次
发布时间:2019-06-24

本文共 1865 字,大约阅读时间需要 6 分钟。

目标:

  1.编写运行函数,生成10个数的列表,没生成一个睡眠一会

  2.编写装饰器,完成函数耗时计算

 

1.编写生成10个数的列表,并睡眠0.2s

代码如下:

[root@localhost python]# cat deco1.py

#!/usr/bin/env python# -*- coding: utf-8 -*-import timedef loop():    result = []    for i in xrange(10):        result.append(i)        time.sleep(0.2)    return resultif __name__ == "__main__":    print loop()

 

2.编写装饰器,实现计算loop()函数,生成10个数列表的耗时

代码如下:

#!/usr/bin/env python# -*- coding: utf-8 -*-import time #装饰器部分def deco(func):    def timeit():        start = time.time()        result = func()        end = time.time()        return (result, end - start)    return timeit #引用装饰器@decodef loop():    result = []    for i in xrange(10):        result.append(i)        time.sleep(0.2)    return resultif __name__ == "__main__":    print loop()

•运行代码,测试效果

[root@localhost python]# python deco1.py([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], 2.0052788257598877)

 

*提示:如果有多个函数,可以直接使用装饰器即可,如以下多个函数情况:

#!/usr/bin/env python# -*- coding: utf-8 -*-import timedef deco(func):    def timeit():        start = time.time()        result = func()        end = time.time()        return (result, end - start)    return timeit@decodef loop():    result = []    for i in xrange(10):        result.append(i)        time.sleep(0.5)    return result@decodef test():    t1 = []    for i in xrange(10):        t1.append(i)        time.sleep(0.8)    return t1if __name__ == "__main__":    print loop()    print test()

 

 

附录:

装饰器,实现多个函数字体的统一设置

代码如下:

#!/usr/bin/env python# -*- coding: utf-8 -*-def set_color(func):    def color(*args):        return "\033[31m%s\033[0m" % func(*args)    return color@set_colordef hello():    return "hello,world!"@set_colordef greet():    return "How are you?"@set_colordef welcome(word):    return "Welcome to %s" % wordif __name__ == '__main__':    print hello()    print greet()    print welcome('bj')

 

转载于:https://www.cnblogs.com/xkops/p/6266070.html

你可能感兴趣的文章
转:Windows 8上强制Visual Studio以管理员身份运行
查看>>
迟来的加勒比海盗3 观后
查看>>
类与对象 - PHP手册笔记
查看>>
谈一谈互联网创业补贴变味后的现象
查看>>
MapGIS转Shp文件的单位问题
查看>>
使用Karate轻松实现自动API测试
查看>>
React
查看>>
CentOS -bash: warning: setlocale: LC_MESSAGES: cannot change locale (en_US.UTF-8)
查看>>
编写一个基本的Android应用程序
查看>>
我的友情链接
查看>>
查看Linux操作系统安装的位数(getconf 命令应用)
查看>>
前后端中转服务remoteService的设计与实现
查看>>
ifstream读取文件失败和乱码问题
查看>>
Python信息采集器使用轻量级关系型数据库SQLite
查看>>
zookeeper中的exception的问题
查看>>
final+基本类型导致只编译常量类引起的错误
查看>>
分库分表的几种常见玩法及如何解决跨库查询等问题
查看>>
把GPS经纬度放入两个字符串,写入文件
查看>>
Java操作MongoDB实现CRUD
查看>>
给js文件传参数
查看>>