前言
装饰器的学习,需要了解以下3个方面的知识
1.函数名即‘变量名’
2.不能更改被装饰函数的源代码以及调用方式
3.高阶函数和嵌套函数的定义
需求:写一个测试函数执行时间的装饰器
import time
def time_test(func): #高阶函数里面接受另一函数,
def wrapper(*args,**kwargs): #嵌套函数在函数里面再定义一个函数
start_time = time.time()
func(*args,**kwargs)
end_time = time.time()
return wrapper #外部函数的返回值是内部函数名
@time_test #语法糖 f = time_test(f) #返回值 wrapper -----> f() =wrapper()
def f():
time.sleep(2)
print('in the f.')
@time_test
def f2(name): #我在装饰器里的内部函数wrapper,参数用的是*args **kwargs
time.sleep(2)
print('in th {}'.format(name))
调用
f()
f2('sex')
ok,了解这些基本的功能都可以实现了!