def decorated(f):
@functools.wraps(f)
def wrapper():
return f()
return wrapper
@decorated
def g():
pass
functools.wraps
выполняет свою работу по сохранению имени g
:
>>> g.__name__
'g'
Но если я передаю аргумент g
, я получаю a 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
?