码迷,mamicode.com
首页 > 编程语言 > 详细

python装饰器 语法与解读

时间:2018-08-13 00:45:17      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:func   记录   line   style   添加   函数   s函数   art   UNC   

import time #加载time模块
from functools import wraps #加载functools模块中的wraps函数


def cost_time(old_fn): # 注:cost_time是装饰器名 ,形参old_fn是要装饰的函数 装饰器最外层没有return,也就是不用返回的
@wraps(old_fn)    #它主要作用就是接收到原函数中的注析,所以括号内也是上面形参一样的
  def inner(*args, **kwargs): # inner它是cost_time这个装饰器的功能区,也就是要添加的功能在此写,它的形参为 *args, **kwargs 这两个,其实就是为了接收原函数中的参数
start_time = time.time() #innser的代码,记录执行原函数时的时间
res = old_fn(*args, **kwargs) # 这个是原函数,结果由变量 res保存,函数名与cost_time形参相同,它的形参与inner的形参相同
end_time = time.time()    #这个也是inner的代码 ,它记录原函数执行结束时的时间
print("花费时间为:", end_time - start_time) #运算并输出原函数执行所花费的时间
return res  # 返回原函数的结果

return inner #返回inner ,这个返回值是固定的,也就是上面inner的函数名,


@cost_time #注:@后面跟的名字就是装饰器的名字 ,
def kk():    #这个函数就是原函数,是要通过装饰器装饰的函数
#这行是函数注明
print(‘这就是原函数‘)


kk() #调用原函数,这样就自动进行装饰了.返回的结果就是这个函数执行所要花费的时间

python装饰器 语法与解读

标签:func   记录   line   style   添加   函数   s函数   art   UNC   

原文地址:https://www.cnblogs.com/jshy/p/9465540.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!