装饰器

Posted tkopython

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了装饰器相关的知识,希望对你有一定的参考价值。

import time
def foo():
print("this is foo")
time.sleep(2)
# foo()

def bar():
print("this is bar")
time.sleep(3)
# bar()

def show_time(f):
def inner():
starttime = time.time()
f()
endtime = time.time()
print("执行时间:%s"%(endtime - starttime))
return inner

# show_time(foo)# 这里虽然计算了时间,但是调用的函数方法发生改变,
# show_time(bar) #之前的是foo,bar,现在是show_time

#给show_time变量赋值
foo = show_time(foo) #这个执行后会执行show_time函数
#这里需要思考下,怎么样在执行foo() 时能再次执行show_time
#这里就需要添加内部函数inner ,把inner的对象地址返回给show_time
#再次执行foo()函数时就是执行的inner(这样就没有改变原本的函数条用方法)
foo()

bar = show_time(bar)

bar()

以上是关于装饰器的主要内容,如果未能解决你的问题,请参考以下文章

python 装饰器:装饰器实例类装饰器(装饰函数)

装饰器、装饰器类与类装饰器(三)

Python进阶装饰器(Decorator)

python 装饰器:装饰器实例内置装饰器

python 装饰器:装饰器实例内置装饰器

TS之装饰器