170 похожих чатов

Подскажите, а как генератор, завернутый в декоратор заставить выдавать в

правильном порядке значения и почему так происходит?

Код:
def Decorator(func):
log.info('start...')
def wrapper(args):
return func(args)
log.info('stop...')
return wrapper

В итоге получается такой вывод:
start...
stop....
И тут объекты генератора уже выводятся (мне надо чтобы они между start и stop выводились)

13 ответов

17 просмотров
XYZ- Автор вопроса

А, вроде дошло - сейчас кое-что попробую

Все правильно работает. Выполняется функция-декоратор, выводит что-то и завершает работу, возвращая wrapper, а потом уже и он вызывается. Вероятно, ты хотел вывод делать изнутри wrapper'а, вставив вызов обернутой функции посередине?

XYZ- Автор вопроса
Vitaliy Derbentsev
Все правильно работает. Выполняется функция-декора...

Ага, уже понял. Правда еще не придумал как сделать чтобы выполнялись начальные и конечные инструкции в обернутом генераторе

XYZ- Автор вопроса
Vitaliy Derbentsev
Все правильно работает. Выполняется функция-декора...

изнутри wrapper'a он не выведет "stop", поскольку раньше вернет результат функции. Как такое правильно реализуется, можешь подсказать?

XYZ
изнутри wrapper'a он не выведет "stop", поскольку ...

Ну, так сохрани результат функции в переменную, доделай, что нужно и верни переменную

XYZ- Автор вопроса
Vitaliy Derbentsev
Ну, так сохрани результат функции в переменную, до...

То же самое получается: def Decorator(func): print('start...) def wrapper(*args, **kwargs): result = func(*args, **kwargs) print('stop...') return result return wrapper Но пока что выключу тг, попробую сам подумать - а потом прочитаю ответ :)

XYZ
То же самое получается: def Decorator(func): pri...

Ок прост тут что то многовато вариантов как можно понять что именно Вам надо) если что пинганите меня, у меня несколько вариантов накидалось (хотел убедиться что правильно понимаю как оно работает)

XYZ
То же самое получается: def Decorator(func): pri...

Что получается и что должно получиться в итоге?

XYZ- Автор вопроса
Vitaliy Derbentsev
Что получается и что должно получиться в итоге?

Должна получиться очень простая вещь: в декораторе идет запуск драйвера, выполняются генераторы, потом идет остановка драйвера :)

XYZ- Автор вопроса
XYZ
Должна получиться очень простая вещь: в декораторе...

Сек. Так действия должны производиться не по выдаче генератора, а по началу/завершению итераций через его значения?

XYZ- Автор вопроса
Vitaliy Derbentsev
Сек. Так действия должны производиться не по выдач...

Да. Уже выкинул декоратор из своего кода и делаю по-другому чуть-чуть :)

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта