def decorated(f):
@functools.wraps(f)
def wrapper():
return f()
return wrapper
@decorated
def g():
pass
functools.wraps
保留以下名称的工作g
:
>>> g.__name__
'g'
但是如果我将一个参数传递给g
,我会得到一个TypeError
包含包装器名称的:
>>> g(1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: wrapper() takes no arguments (1 given)
这个名字从何而来?它保存在哪里?有没有办法让异常看起来像g() takes no arguments
?