ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

装饰器(Python)

2020-09-07 03:31:44  阅读:187  来源: 互联网

标签:name Python func time print main 装饰 def


装饰器(Decorators)是Python的一个重要部分,简单的说:是修改其他函数功能的函数。有助于让我们的代码更简短。为已经存在的函数或对象添加额外的功能.

1.装饰器带参数

import time

#装饰器 #计算时间差 def getTime(name): def getCutTime(func): local_time = time.time() #print('当前用户:' + name + ',当前时间:' + str(time.time())) print('当前运行函数名称:' + func.__name__) func() res = time.time() - local_time print('运行时间差:' + str(res)) #如果是main()后面需要实例化的话,则需要返回main回去,否则不用 #return func return getCutTime #语法糖 @getTime('alex') def main(): print('开始执行main') for i in range(100): time.sleep(0.01) pass print('结束执行main') #返回的func,然后func()单单是执行这个main()实例化操作,gettime装饰器是将func功能丰富了一下(也就是main原函数) main

执行结果:

当前运行函数名称:main
开始执行main
结束执行main
运行时间差:1.0788896083831787

 

2.如果原函数里面带参数的话(使用*arges,**kwargs 或者指定名称接受均可以)

import time

#计算时间差
def getTime(level):
    def getCutTime(func):
        def inner(name):
            local_time = time.time()
            #print('当前用户:' + name + ',当前时间:' + str(time.time()))
            print('当前运行函数名称:' + func.__name__)
            func(name)
       #func(*args, **kwargs) res = time.time() - local_time print('运行时间差:' + str(res)) #如果是main()后面需要实例化的话,则需要返回main回去,否则不用 #return func return inner return getCutTime @getTime('1') def main(name_ori): print('开始执行main') for i in range(100): time.sleep(0.01) pass print('结束执行main') #返回的func,然后func()单单是执行这个main()实例化操作,gettime装饰器是将func功能丰富了一下(也就是main原函数) main('aa')

执行结果

当前运行函数名称:main
开始执行main
结束执行main
运行时间差:1.0813817977905273

 

标签:name,Python,func,time,print,main,装饰,def
来源: https://www.cnblogs.com/yunxintryyoubest/p/13624621.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有