我的理解是
@outter
def decorated(name):
print(name)
decorated("Bob")
相当于
outter(decorated("Bob"))
.
那是错误的。相当于
outter(decorated)("Bob")
decorated
替换为的返回值
outer(decorated)
(即
inner
). 当你打电话的时候
装饰
,你真的在打电话
内部的
您可以交互检查:
>>> def outter(func):
... def inner(*args, **kwargs):
... print('Hi my name is ')
... return func(*args, **kwargs)
... return inner
...
>>> @outter
... def decorated(name):
... print(name)
...
>>> decorated
<function outter.<locals>.inner at 0x7f5aec3461e0>