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

  • 带参数的装饰器 实现方式一

  • 带参数的装饰器 实现方式二(语法糖)

原文地址:https://www.cnblogs.com/liuchunxiao83/p/12317536.html