У меня есть код:Сохраняет ли декоратор более одного возвращаемого значения?
def my_decorator(target):
def wrapper():
print('Calling function "%s"' % target.__name__)
return target() # 1
return wrapper # 2
@my_decorator
def my_target(): # 3
print('Hi. I am the target.')
my_target()
я опишу то, что я понимаю, об этом шаблон Disorderly.
# 3 Мы передаем функцию my_target
в качестве аргумента декоратору my_decorator
. Нет проблем.
# 1 На самом деле мы вызываем функцию my_target
.
# 2 (мои сомнения). Когда мы вызываем функцию в # 1, она будет печатать и возвращаться к wrapper
'Hi. I am the target.'
, поэтому wrapper
теперь сохраняет печать с my_target
. Затем в # 2 вызывается ссылка от wrapper()
. Поэтому после этого вызова, wrapper
ссылка запустит print('..')
, установленную в себе функцию и вернет значение, хранящееся ранее в нем («Привет. Я - цель», как упоминалось в начале). Итак, функция wrapper
stores
два значения?
моя голова только начала болеть, читая мысли ... –
'' wrapper'' * - нормальная функция, в # 2 вы ее не называете, вы просто возвращаете ее. И что вы подразумеваете под «функцией сохранения значений»? – fjarri
Я имею в виду, что когда у меня есть функция и я возвращаю что-то, функция получает возвращаемое значение и сохраняет его в каком-то подземном мире (например, строка «привет» или bool True), чтобы использовать в другой части моего кода. Редактировать: Я неправильно понял это так? – ovrwngtvity