17 Aug 2015
try: return cache(key) except:
exam0.py
from functools import wraps def my_decorator(func): @wraps(func) def wrapper(*args, **kwargs): return func(*args, **kwargs) return wrapper @my_decorator def say(): '''here describe this function''' print "hello, called say() function"
>>> from exam0 import say >>> say() >>> hello, called say() function >>> say.__name__ #这里保留了say()被装饰之前的name >>> 'say' >>> say.__doc__ #同样也保留了say()的docstring >>> 'here describe this function'
让我们把”@wraps(func)“这句注释掉再试试看
exam0.py
from functools import wraps def my_decorator(func): #@wraps(func) def wrapper(*args, **kwargs): return func(*args, **kwargs) return wrapper @my_decorator def say(): '''here describe this function''' print "hello, called say() function"
>>> from exam0 import say >>> say() >>> hello, called say() function >>> say.__name__ #这里替代了say()的name和docstring >>> 'wrapper' >>> say.__doc__