Python: несколько способов вернуть несколько переменных из функции

В Python функции являются фундаментальной частью языка и часто используются для инкапсуляции повторно используемых блоков кода. Одним из распространенных требований является возврат нескольких переменных из функции. В этой статье рассматриваются различные методы достижения этой цели, а также приводятся примеры кода.

Метод 1. Использование кортежа
Самый простой и наиболее часто используемый подход — возврат нескольких переменных в виде кортежа. Вот пример:

def return_multiple():
    variable1 = 10
    variable2 = "Hello"
    return variable1, variable2
result1, result2 = return_multiple()
print(result1)  # Output: 10
print(result2)  # Output: Hello

Метод 2: использование списка
В качестве альтернативы вы можете вернуть несколько переменных в виде списка:

def return_multiple():
    variable1 = 10
    variable2 = "Hello"
    return [variable1, variable2]
result = return_multiple()
print(result[0])  # Output: 10
print(result[1])  # Output: Hello

Метод 3. Использование словаря.
Если вы хотите связать имена переменных с их значениями, вы можете вернуть несколько переменных в виде словаря:

def return_multiple():
    variable1 = 10
    variable2 = "Hello"
    return {'var1': variable1, 'var2': variable2}
result = return_multiple()
print(result['var1'])  # Output: 10
print(result['var2'])  # Output: Hello

Метод 4: использование именованных кортежей
Именованные кортежи позволяют определять легкие, неизменяемые структуры данных с именованными полями. Их можно использовать для возврата нескольких переменных с именованным доступом:

from collections import namedtuple
def return_multiple():
    MyTuple = namedtuple('MyTuple', ['variable1', 'variable2'])
    return MyTuple(variable1=10, variable2="Hello")
result = return_multiple()
print(result.variable1)  # Output: 10
print(result.variable2)  # Output: Hello

Метод 5: использование пользовательского класса
Для более сложных сценариев вы можете создать собственный класс для инкапсуляции и возврата нескольких переменных:

class MyVariables:
    def __init__(self, variable1, variable2):
        self.variable1 = variable1
        self.variable2 = variable2
def return_multiple():
    variable1 = 10
    variable2 = "Hello"
    return MyVariables(variable1, variable2)
result = return_multiple()
print(result.variable1)  # Output: 10
print(result.variable2)  # Output: Hello

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