def log(func):
def wrapper(*args, **kw):
print('call %s():' % func.__name__)
return func(*args, **kw)
return wrapper
@log
def now():
print('2017-5')为什么要在中间嵌套包装器函数,为什么不呢?这是我在stackoverflow中的第一个问题,而且我不擅长英语.so我的描述有任何问题,请原谅我的.Thanks!
def log(func):
print('call %s():' % func.__name__)
return func(*args, **kw)
@log
def now():
print('2017-5')发布于 2017-06-02 19:50:03
稍微了解一下装饰器:
@decorator
def func():
...恰好等于:
func = decorator(func)正如您所注意到的,在第一个选项中,当您的程序中调用函数now时,任何时候都会调用print('call %s():' % func.__name__)。在第二个选项中,当装饰器仅在不调用now的情况下应用时,将调用此print。
使用嵌套函数是因为decorator用修改后的函数替换了原来的函数。
https://stackoverflow.com/questions/44328078
复制相似问题