有无参数均可调用
def log(para):
if callable(para): #如果para为我们的函数的话,就是可调用的对象,此时利用无参数写法
@functools.wraps(para)
def wrapper(*args,**kw):
print('call %s()' % para.__name__)
return para(*args,**kw)
return wrapper
else: #此时para为我们需要的文本,所以是不可调用的,按有参数写法
def decorator(fn):
@functools.wraps(fn)
print('%s %s()' % (para,fn.__name__))
return fn(*args,**kw)
return decorator
为什么callable True是无参写法呢,不应该表示para有参数传入吗。新手发问,无意冒犯,感谢。
Sign in to make a reply
有福气的小羊
有无参数均可调用
def log(para):
if callable(para): #如果para为我们的函数的话,就是可调用的对象,此时利用无参数写法
@functools.wraps(para)
def wrapper(*args,**kw):
print('call %s()' % para.__name__)
return para(*args,**kw)
return wrapper
else: #此时para为我们需要的文本,所以是不可调用的,按有参数写法
def decorator(fn):
@functools.wraps(fn)
def wrapper(*args,**kw):
print('%s %s()' % (para,fn.__name__))
return fn(*args,**kw)
return wrapper
return decorator