yield для возврата результатов по мере их вычисления.  Это позволяет обрабатывать результаты итеративно.
def calculate():
  results = []
  results.append(1 + 1)
  results.append(2 * 2)
  return results
print(calculate()) # Output: [2, 4]
  Существует несколько способов вернуть результаты вычислений из разных частей программы в одной функции. Выбор подходящего метода зависит от конкретной задачи и требований к структуре кода.
1. Использование списка или кортежа:
Самый простой способ - собрать результаты в список или кортеж и вернуть его в конце функции. Это подходит, когда количество результатов фиксировано или легко определяется в процессе выполнения.
def calculate_something(x, y):
    result1 = x + y
    result2 = x * y
    result3 = x - y
    return [result1, result2, result3]  # Возвращаем список
  Использование:
results = calculate_something(5, 3)
print(results[0])  # Выводит 8
print(results[1])  # Выводит 15
print(results[2])  # Выводит 2
  2. Использование словаря:
Если результаты имеют смысл и их нужно идентифицировать, можно использовать словарь. Ключи словаря позволяют легко получать доступ к каждому результату по его имени.
def calculate_something(x, y):
    result1 = x + y
    result2 = x * y
    result3 = x - y
    return {"sum": result1, "product": result2, "difference": result3}  # Возвращаем словарь
  Использование:
results = calculate_something(5, 3)
print(results["sum"])        # Выводит 8
print(results["product"])    # Выводит 15
print(results["difference"]) # Выводит 2
  3. Использование yield (генераторы):
Если результаты генерируются последовательно и не все они нужны сразу, можно использовать `yield` для создания генератора. Это позволяет экономить память и вычислять результаты по мере необходимости.
def calculate_something(x, y):
    yield x + y
    yield x * y
    yield x - y
  Использование:
results = calculate_something(5, 3)
for result in results:
    print(result) # Выводит 8, 15, 2 последовательно
# Или можно преобразовать генератор в список:
results_list = list(calculate_something(5, 3))
print(results_list) # Выводит [8, 15, 2]
  4. Использование побочных эффектов (не рекомендуется в общем случае):
Можно изменять глобальные переменные или объекты, переданные в функцию по ссылке. Однако, это считается плохой практикой, так как делает код менее читаемым и предсказуемым, усложняет отладку.
results = [] # Глобальная переменная (плохая практика)
def calculate_something(x, y):
    global results
    results.append(x + y)
    results.append(x * y)
    results.append(x - y)
calculate_something(5, 3)
print(results) # Выводит [8, 15, 2]
  Важно! Следует избегать использования глобальных переменных и других побочных эффектов, если это возможно. Использование списков, кортежей, словарей или генераторов обычно предпочтительнее, поскольку они делают код более понятным и управляемым.