Да, в Python можно вернуть несколько значений из функции. Это достигается несколькими способами:
Это самый распространенный способ. Функция возвращает кортеж, который содержит несколько значений. При вызове функции можно присвоить возвращенный кортеж одной переменной, либо распаковать его в несколько отдельных переменных.
def my_function(x, y):
  sum = x + y
  difference = x - y
  return sum, difference  # Возвращает кортеж (sum, difference)
result = my_function(5, 3)
print(result)  # Выведет: (8, 2)
sum_val, diff_val = my_function(5, 3)  # Распаковка кортежа
print(f"Сумма: {sum_val}, Разность: {diff_val}")  # Выведет: Сумма: 8, Разность: 2
      Аналогично кортежу, можно вернуть список. Однако, кортежи обычно предпочтительнее, если количество и тип возвращаемых значений заранее определены, так как они неизменяемые (immutable).
def my_function(x, y):
  return [x + y, x - y]
result = my_function(5, 3)
print(result)  # Выведет: [8, 2]
      Если необходимо возвращать именованные значения, то словарь - отличный вариант. К возвращаемым значениям можно обращаться по ключам, что делает код более читаемым.
def my_function(x, y):
  return {'sum': x + y, 'difference': x - y}
result = my_function(5, 3)
print(result['sum'])  # Выведет: 8
print(result['difference']) # Выведет: 2
      Если возвращаемые значения логически связаны друг с другом, можно создать класс и вернуть его экземпляр. Это особенно полезно в объектно-ориентированном программировании.
class Result:
  def __init__(self, sum, difference):
    self.sum = sum
    self.difference = difference
def my_function(x, y):
  sum_val = x + y
  diff_val = x - y
  return Result(sum_val, diff_val)
result = my_function(5, 3)
print(result.sum)       # Выведет: 8
print(result.difference)  # Выведет: 2
      Наиболее распространенным и идиоматичным способом является возврат кортежа, особенно если количество возвращаемых значений невелико и фиксировано. Выбор конкретного способа зависит от контекста и требований к читаемости и структуре кода.