Python装饰器
适用场景:
(1)改变现有代码的功能或为现有代码添加功能;
(2)复用共有的代码,例如:判断用户是否登录;
注意:利用装饰器功能,可以编写各种辅助开发工具,完成诸如调用跟踪、性能测试、内存检测等任务。
实现:
import datetime
import functools
def decorator(func):
"""装饰器函数"""
@functools.wraps(func)
def wrapper(*args, **kwargs):
print(datetime.datetime.now())
func(*args, **kwargs)
return wrapper
@decorator
def fun_1(func_name):
"""业务函数"""
print("This is a function named " + func_name)
@decorator
def fun_2(func_name_1, func_name_2):
"""业务函数"""
print("This is a function named " + func_name_1)
print("This is a function named " + func_name_2)
fun_1("func1")
fun_2("func2-1", "func2-2")
结果:
2019-02-19 10:53:14.429000
This is a function named func1
2019-02-19 10:53:14.429000
This is a function named func2-1
This is a function named func2-2