Да, в 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
Наиболее распространенным и идиоматичным способом является возврат кортежа, особенно если количество возвращаемых значений невелико и фиксировано. Выбор конкретного способа зависит от контекста и требований к читаемости и структуре кода.