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

Python装饰器进阶

时间:2019-09-21 12:35:30      阅读:89      评论:0      收藏:0      [点我收藏+]

标签:编程   情况下   函数   time   python   一个   start   函数实现   tar   

编程的一个原则:
开放封闭原则,对源代码的修改封闭,在源代码不变的情况下,对扩展新功能开放


import time
def foo():
print(‘foo....‘)
time.sleep(2)
def show_time(func):
start = time.time ()
func()
end = time.time ()
print (‘spend %s‘%(end-start))
show_time(foo)

上述代码有个问题。show_time()函数是个基层函数,需要所有上层函数调用它实现功能。。上述功能实现,通过show_time函数调用上层函数实现,不符合逻辑

通过装饰器实现:
def show_time(func):
def inner(): #inner是个闭包函数
start = time.time ()
func()
end = time.time ()
print (‘spend %s‘%(end-start))
return inner
foo=show_time(foo)
foo()
上层函数调用基层函数show_time()函数。

@show_time实现功能一样
import time
def show_time(func):
def inner(): #inner是个闭包函数
start = time.time ()
func()
end = time.time ()
print (‘spend %s‘%(end-start))
return inner
@show_time
def foo():
print(‘foo....‘)
time.sleep(2)
@show_time自动调用后面的函数当参数。相当于 foo=show_time(foo)

Python装饰器进阶

标签:编程   情况下   函数   time   python   一个   start   函数实现   tar   

原文地址:https://www.cnblogs.com/zd37/p/11562150.html

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