Я погрузился в декоратор Python и играл с некоторыми способами для добавления аргументов функции декораторам.Декоратор запускается без вызова
Проблема, с которой я сталкиваюсь, связана со мной, желая сделать рекурсию в декораторе, устанавливая некоторые переменные только при первоначальном вызове. Поэтому в этом примере я хотел бы напечатать сообщение только один раз в вызове функции.
Прямо сейчас он печатает на определении функции, а не на вызове функции. Смотрите этот пример кода:
def recursiveCounter(message):
def decorater(func):
def wrapper(count):
func(count)
if count < 10:
count += 1
wrapper(count)
print message
return wrapper
return decorater
@recursiveCounter("hello I was called once")
def counter(count):
print count
counter(0)
да, но когда он находится в обертке это будет называться в рекурсии. чего я не хочу. –
@JohnSmith тогда не пишите рекурсивную обертку! Вы не можете иметь это в обоих направлениях. – jonrsharpe
@JohnSmith или добавить 'inner_wrapper' для реализации рекурсии - см. Edit – jonrsharpe