Одним из преимуществ процедурного программирования является возможность извлечь любую часть кода в функцию, которая может быть повторно использована во многих местах, что уменьшает дублирование кода. Однако оператор yield
в Python, по-видимому, снижает эту способность, потому что когда оператор yield
извлекается в другую функцию, исходная функция генератора становится нормальной и, следовательно, больше не может использоваться как генератор.Дублирование кода в функциях генератора в Python
Рассмотрим следующий пример:
def foo():
do_something()
bar = get_some_value()
yield bar
save(bar)
do_something_else()
# more code in between
bar = get_some_value()
yield bar
save(bar)
# finishing up
Обратите внимание, что код вокруг yield
заявления всегда то же самое, но мы не можем извлечь его функции.
Является ли это известным недостатком Python или существует обходное решение для повторного использования кода вокруг yield
операторов?
Просьба представить несколько примеров, демонстрирующих вашу проблему. Сейчас довольно неясно, о чем вы спрашиваете. – MattDMo
Я не понимаю, что вы говорите. Вы имеете в виду [Coroutines] (https://en.wikipedia.org/wiki/Coroutine)? –