Python 中的带参装饰器
2021-02-09 13:16
标签:auth mat created 表示 import div ted wrap too Python 中的带参装饰器 标签:auth mat created 表示 import div ted wrap too 原文地址:https://www.cnblogs.com/easy-test/p/12751110.html"""
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__))