装饰器
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()
以上是关于装饰器的主要内容,如果未能解决你的问题,请参考以下文章