明天你好 2020-04-22
""" Created by zhusp on 2020/4/22 """ __author__ = ‘zhusp‘ from functools import wraps # 装饰器实际就是一个函数 # 有2个特别之处 # 1. 参数是一个函数 # 2. 返回值是一个函数, def log(info): def decorator(func): # wraps装饰器可以让被装饰的函数,执行的时候,函数名还是保持原名 @wraps(func) def wrapper(*args, **kwargs): func(*args, **kwargs) print(info) return wrapper # 返回不带括号的函数名,表示不执行 return decorator def run(): print(‘run‘) @log(‘dasdas‘) def add(a, b): print(‘result:{}‘.format(a + b)) # run() # 使用装饰器,等于把run传入write_operate_log,再返回wrapper # run = write_operate_log(run) # 执行run()函数,相当于执行wrapper() # 相当于执行wrapper,先执行run下的逻辑,在执行print打印 add(1, 2) print(‘装饰器后的执行函数名:{}‘.format(add.__name__))