return немедленно завершает функцию и отправляет одно значение обратно вызывающему кодуyield приостанавливает функцию, сохраняет её состояние и выдаёт значение — выполнение возобновляется с той же точки при следующем вызовеИспользование yield превращает обычную функцию в функцию-генератор. Её вызов возвращает объект генератора, а не выполняет тело функции сразу.
def regular():
return 42 # функция завершается здесь
def generator():
yield 1 # приостанавливается, возобновляется при next()
yield 2
yield 3
gen = generator()
next(gen) # возвращает 1
next(gen) # возвращает 2
return возвращает все значения сразу; yield выдаёт значения по одному, что делает генераторы идеальными для больших наборов данныхyield сохраняет локальные переменные и позицию выполнения между вызовами; return их отбрасываетreturn можно вызывать повторно с чистым состоянием; генератор исчерпывается после того, как все значения выданыreturn для обычных функций, которые вычисляют и возвращают один результатyield при работе с последовательностями, потоками данных или в любых сценариях, где ленивые вычисления улучшают производительностьФункция-генератор с yield возвращает объект генератора сразу, не выполняя тело функции, а обычная функция с return выполняет все тело полностью перед тем, как вернуть значение.
Новый — ещё не проверен сообществом
Вы