python 装饰器
- python语法中外面定义的变量里面可以使用,但里面定义的变量外面不能使用
- 无参数无返回的装饰器
import time,random
#py 一切皆对象,函数也是一个对象,而函数名称就对象名称
#所谓的装饰器:就是在函数中定义另一个函数,装饰器本身也是一个函数
def outer(func): #func 参数必须是一个被装饰函数地址
#里面定义一个内部函数(主要完成装饰的功能)
def inner():
start_time = time.time()
func() # 调用真正的函数(被装饰的函数)
end_time = time.time()
print('运行时间为:',end_time-start_time)
return inner
#无参数无返回的装饰器
def index():
time.sleep(random.randint(1,3))
print('welcome to index page')
# index() #直接调用
f = outer(index)
f()
运行结果:
welcome to index page
运行时间为: 3.000171661376953
- 带参数的装饰器 实现方式一
- 带参数的装饰器 实现方式二(语法糖)