要玩装饰器,就要知道闭包,何为闭包?我们要从闭包的三要素说起:
1.函数嵌套 即一个函数内部还有一个函数。
2.外部函数返回值为内部函数(名)。
3.内部函数要用到外部函数的变量。
为啥要用装饰器呢?
我的理解为,在不改变原码的基础上拓展某些功能,不用再写一遍代码了,在某些程度上减少了代码的冗余。
看代码:
import time
def outer(fun):
def inner(a,b):
print('开始计时了啊')
start_time=time.time()
fun(a,b)
end_time=time.time()
print(f'共用时{end_time-start_time}')
return inner
@outer
def funs(x,y):
time.sleep(2)
print(x+y)
funs(2,4)