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
?