我们在使用 Decorator 的过程中,难免会损失一些原本的功能信息。直接拿 stackoverflow 里面的栗子
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
:
:
)
_logging
logged
:
x
:
x
)
__name__
with_logging
|
而functools.wraps 则可以将原函数对象的指定属性复制给包装函数对象, 默认有 __module__、__name__、__doc__,或者通过参数选择。代码如下:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
wraps
:
)
:
)
_logging
logged
:
x
# prints 'f'
|