Можно ли вернуть несколько значений из функции?

Да, в Python функция может возвращать несколько значений. Это достигается возвратом кортежа (tuple), списка (list) или словаря (dictionary).

Да, в Python можно вернуть несколько значений из функции. Это достигается несколькими способами:

  1. Возврат в виде кортежа (tuple):

    Это самый распространенный способ. Функция возвращает кортеж, который содержит несколько значений. При вызове функции можно присвоить возвращенный кортеж одной переменной, либо распаковать его в несколько отдельных переменных.

    
    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
          
  2. Возврат в виде списка (list):

    Аналогично кортежу, можно вернуть список. Однако, кортежи обычно предпочтительнее, если количество и тип возвращаемых значений заранее определены, так как они неизменяемые (immutable).

    
    def my_function(x, y):
      return [x + y, x - y]
    
    result = my_function(5, 3)
    print(result)  # Выведет: [8, 2]
          
  3. Возврат в виде словаря (dictionary):

    Если необходимо возвращать именованные значения, то словарь - отличный вариант. К возвращаемым значениям можно обращаться по ключам, что делает код более читаемым.

    
    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
          
  4. Возврат в виде экземпляра класса (object):

    Если возвращаемые значения логически связаны друг с другом, можно создать класс и вернуть его экземпляр. Это особенно полезно в объектно-ориентированном программировании.

    
    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
          

Наиболее распространенным и идиоматичным способом является возврат кортежа, особенно если количество возвращаемых значений невелико и фиксировано. Выбор конкретного способа зависит от контекста и требований к читаемости и структуре кода.

0