函数三 ——装饰器函数
一、装饰器的本质:一个闭包函数
装饰器的功能:在不修改原函数及其调用方式的情况下对原函数功能进行扩展
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)