Я пытаюсь найти способ передать мои аргументы по умолчанию для декоратора. Я должен сказать, что я довольно новичок в сфере декораторов, поэтому, может быть, я просто не понимаю его должным образом, но пока не нашел ответов.Передача аргументов по умолчанию декоратору в python
Итак, здесь мой модифицированный пример с страницы руководства python functools.wraps.
from functools import wraps
def my_decorator(f):
@wraps(f)
def wrapper(*args, **kwds):
print 'Calling decorated function'
print 'args:', args
print 'kwargs:', kwds
return f(*args, **kwds)
return wrapper
@my_decorator
def example(i, j=0):
"""Docstring"""
print 'Called example function'
example(i=1)
Я хочу j=0
быть принят, тоже. Так что вывод должен быть:
Calling decorated function
args:()
kwargs: {'i': 1, 'j': 0}
Called example function
'J = 0 '* это * прошло, но ** не внутри' wrapper' **. Если вы напечатаете i, j' внутри 'example', вы увидите, что он есть. Вы можете использовать, например. 'inspect.getargspec (f)', чтобы узнать, какие значения по умолчанию установлены для функции, которая будет оформлена, но почему вам нужно получить доступ к умолчанию в 'wrapper'? – jonrsharpe
Я знаю, что его передали в 'example', но мне нужно' j' передать в 'wrapper', потому что это необходимо для вычислений, которые я выполняю со многими несколькими функциями. Но, как правило, использование 'inspect.getargspec (f)' будет работать, спасибо. –