装饰器 = 高阶函数 + 嵌套函数
高阶函数:将一个函数作为实参进行传递
def func():
print("func")
def test(func):
print("test")
func()
test()
嵌套函数: 在一个函数体内定义另一个函数
x = 0
def test1():
x = 1
def test2():
x = 2
print(x)
test2()
test1() --> 2 嵌套函数的作用域和局部变量的作用域一致
装饰器的特性:1、不改变被装饰函数的源代码
2、不改变被装饰函数的运行方式
import time
#装饰器
def timer(func):
def deco():
start_time = time.time()
func()
stop_time = time.time()
return deco
#原函数
@timer #相当于 test1 = timer(test1)
def test1():
time.sleep(3) #休眠3s
print("test1")
@timer
def test2():
time.sleep(3)
print("test2")
test1()
test2()