原文链接:https://www.cnblogs.com/huangjm263/p/8136387.html
装饰器的本质:一个闭包函数
装饰器的功能:在不修改原函数及其调用方式的情况下对原函数功能进行扩展
import time
def func1(): #被装饰的函数
print('in func1')
def timmer(func): #装饰器函数
def inner():
start = time.time()
func()
end = time.time()
print(end - start)
return inner
func1 = timmer(func1)
func1()
import time
def timmer(func): #装饰器函数
def inner():
start = time.time()
func()
end = time.time()
print(end - start)
return inner
@timmer #语法糖 @装饰器函数名 #==> func1 = timmer(func1)
def func1(): #被装饰的函数
print('in func1')
func1()
import time
def timmer(func):
def inner(m):
start = time.time()
func(m)
end = time.time()
print(end - start)
return inner
@timmer #===>func1 = timmer(func1)
def func1(a):
print(a)
func1(5)
import time
def timmer(f): #装饰器函数
def inner():
start = time.time()
ret = f() #被装饰的函数
end = time.time()
print(end - start)
return ret
return inner
@timmer #语法糖 @装饰器函数名
def func(): #被装饰的函数
time.sleep(0.1)
print('hello world')
return '新年好'
# func = timmer(func)
ret = func()
print(ret)