правильном порядке значения и почему так происходит?
Код:
def Decorator(func):
log.info('start...')
def wrapper(args):
return func(args)
log.info('stop...')
return wrapper
В итоге получается такой вывод:
start...
stop....
И тут объекты генератора уже выводятся (мне надо чтобы они между start и stop выводились)
А, вроде дошло - сейчас кое-что попробую
Все правильно работает. Выполняется функция-декоратор, выводит что-то и завершает работу, возвращая wrapper, а потом уже и он вызывается. Вероятно, ты хотел вывод делать изнутри wrapper'а, вставив вызов обернутой функции посередине?
Ага, уже понял. Правда еще не придумал как сделать чтобы выполнялись начальные и конечные инструкции в обернутом генераторе
изнутри wrapper'a он не выведет "stop", поскольку раньше вернет результат функции. Как такое правильно реализуется, можешь подсказать?
Внутри wrapper, вызывая func там, где нужно
Ну, так сохрани результат функции в переменную, доделай, что нужно и верни переменную
То же самое получается: def Decorator(func): print('start...) def wrapper(*args, **kwargs): result = func(*args, **kwargs) print('stop...') return result return wrapper Но пока что выключу тг, попробую сам подумать - а потом прочитаю ответ :)
Ок прост тут что то многовато вариантов как можно понять что именно Вам надо) если что пинганите меня, у меня несколько вариантов накидалось (хотел убедиться что правильно понимаю как оно работает)
Что получается и что должно получиться в итоге?
Должна получиться очень простая вещь: в декораторе идет запуск драйвера, выполняются генераторы, потом идет остановка драйвера :)
вот написал что я делаю :)
Сек. Так действия должны производиться не по выдаче генератора, а по началу/завершению итераций через его значения?
Да. Уже выкинул декоратор из своего кода и делаю по-другому чуть-чуть :)
Обсуждают сегодня