import doctest
import functools
# 如果不加上@functools.wraps(func)这一行的话, foo函数里面的doc测试就会失败。
# 原因是foo这个symbol实际上绑定的是wrapper这个函数,
# 运行的其实是wrapper.__doc__里面的测试里,自然就失败了。
def log(func):
# @functools.wraps(func)
def wrapper(*args, **kwargs):
"""
>>> foo()
'warpper'
"""
return func(*args, **kwargs)
return wrapper
@log
def foo():
"""
>>> foo()
'foo'
"""
return "foo"
if __name__ == "__main__":
print(foo.__doc__)
doctest.testmod(verbose=False)