2
我買了這是在下面的代碼說明了裝飾圖書館的一個漂亮怪異的行爲:裝飾Python庫隱藏kwargs內ARGS
from decorator import decorator
@decorator
def wrap(f, a, *args, **kwargs):
print 'Decorator:', a, args, kwargs
return f(a, *args, **kwargs)
def mywrap(f):
def new_f(a, *args, **kwargs):
print 'Home made decorator:', a, args, kwargs
return f(a, *args, **kwargs)
return new_f
@wrap
def funcion(a, b, *args, **kwargs):
pass
@mywrap
def myfuncion(a, b, *args, **kwargs):
pass
funcion(1, b=2)
myfuncion(1, b=2)
這個腳本打印的執行:
$ python /tmp/test.py
Decorator: 1 (2,) {}
Home made decorator: 1() {'b': 2}
'裝飾者'隱藏在參數內部的kwargs,我怎麼能解決這個問題,而不使用「自制」裝飾。
謝謝。