Итак, я писал функцию, в которой много тела происходит в теле oop, и иногда вызывающему может быть интересно получить ответ на некоторые вычисления.
Обычно я просто помещаю результаты в список и возвращаю список, но в этом случае результаты слишком велики (несколько сотен МБ на каждую l oop).
Я написал это, не задумываясь о это, ожидая, что Python's Dynami c печатает, чтобы понять вещи, но следующее всегда создается как генератор.
def mixed(is_generator=False):
for i in range(5):
# process some stuff including writing to a file
if is_generator:
yield i
return
Из этого у меня есть два вопроса:
1) Присутствует ли ключевое слово yield
в области видимости немедленно превращает объект в генератор?
2) Есть ли разумный способ получить поведение, которое я намеревался?
2.1) Если нет, то почему это невозможно? (С точки зрения того, как функции и генераторы работают в Python.)