Ленивые вычисления (lazy evaluation) - это стратегия вычислений, при которой вычисления откладываются до тех пор, пока их результат действительно не понадобится.  В Python, генераторы и ключевое слово yield играют важную роль в реализации ленивых вычислений.
Вот как yield помогает реализовать ленивость:
yield, она становится генератором.  Вместо возврата значения, генератор возвращает объект-итератор.  Код внутри генератора не выполняется сразу.for или функции next()). При каждом вызове next(), генератор возобновляет свою работу с места, где он остановился в прошлый раз (то есть, после последнего yield), выполняет код до следующего yield и возвращает значение, указанное после yield.Пример:
def infinite_sequence():
  """Бесконечная последовательность чисел."""
  num = 0
  while True:
    yield num
    num += 1
# Создаем генератор
generator = infinite_sequence()
# Получаем только первые 5 чисел
for i in range(5):
  print(next(generator))  # Вычисление происходит только при вызове next()
# Вывод:
# 0
# 1
# 2
# 3
# 4
  В этом примере функция infinite_sequence() создает бесконечную последовательность чисел.  Если бы мы попытались создать список всех этих чисел сразу, мы бы получили ошибку нехватки памяти.  Однако, с помощью yield мы можем получать числа по одному, по мере необходимости, что делает вычисления ленивыми и эффективными.
Таким образом, yield позволяет функциям возвращать итераторы, которые вычисляют значения только при необходимости, что является ключевой характеристикой ленивых вычислений.