工作中装饰器的作用:在不更改函数的基础上,为函数添加额外的功能
def log(filename: str):
def inner(func):
print(f'{func.__name__}')
def wrapper(*args, **kwargs):
print(args)
func(*args, **kwargs)
return wrapper
return inner
@log(filename="xxx.log")
def add(a, b):
return a + b
add(1, 2)
用类装饰某个函数
"""
@A
def f(a,b):
pass
f 传给 A
"""
import time
class CalTime(object):
def __init__(self, func): # 返回一个对象:__init__方法首先会初始化对象,并把对象返回。
self.func = func
print("~~~~~~")
def __call__(self, *args, **kwargs): # __call__当对一个对象加()进行调用的时候,此方法会自动执行