Если у меня есть следующие функции:Как использовать именованные аргументы в декораторе?
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: перехватывать() получила неожиданный аргумент ключевого слова 'а'
Итак, нет способа применить это к любой функции? – Geo
Переработал ответ. –