次の機能がある場合:
def intercept(func):
# do something here
@intercept(arg1=20)
def whatever(arg1,arg2):
# do something here
arg1が 20の場合にのみインターセプトを起動したいと考えています。名前付きパラメーターを関数に渡せるようにしたいと考えています。どうすればこれを達成できますか?
ここに小さなコードサンプルがあります:
def intercept(func):
def intercepting_func(*args,**kargs):
print "whatever"
return func(*args,**kargs)
return intercepting_func
@intercept(a="g")
def test(a,b):
print "test with %s %s" %(a,b)
test("g","d")
これにより、次の例外 TypeError がスローされます。intercept() は予期しないキーワード引数 'a' を取得しました