Python позволяет вам возвращать из функции несколько значений.
Для этого необходимо вернуть структуру данных, содержащую эти несколько значений. Например, список количества миль, которые надо пробежать за неделю.
def miles_to_run(minimum_miles):
week_1 = minimum_miles + 2
week_2 = minimum_miles + 4
week_3 = minimum_miles + 6
return [week_1, week_2, week_3]
print(miles_to_run(2))
# result: [4, 6, 8]
Структура данных — контейнер, хранящий однотипные данные. Эти данные могут быть возвращены из функций. В этой статье мы узнаем, как возвращать несколько значений из структур вроде кортежа, списка и словаря.
Кортежи
Кортеж — упорядоченная, неизменяемая последовательность. То есть, значения внутри кортежа мы изменять не можем.
Мы можем использовать кортеж, например, для хранения информации о человеке (о его имени, возрасте, месте жительства).
nancy = ("Нэнси", 55, "Чикаго")
Пример функции, которая возвращает кортеж:
def person():
return "Боб", 32, "Бостон"
print(person())
# result: ('Боб', 32, 'Бостон')
Заметьте, что в предложении return мы не использовали круглые скобки для возврата значения. Это потому, что кортеж можно вернуть, просто отделив каждый элемент запятой, как в нашем примере.
«Кортеж образуют запятые, а не круглые скобки» — так написано в документации. Но для создания пустых кортежей круглые скобки необходимы. Также это помогает избежать путаницы.
Пример функции, которая использует () для возврата кортежа:
def person(name, age):
return (name, age)
print(person("Генри", 5))
#result: ('Генри', 5)
Список
Список — упорядоченная, изменяемая последовательность. Элементы списка можно изменять.
Список с городами:
cities = ["Бостон", "Чикаго", "Джексонвилл"]
Или с оценками:
test_scores = [55, 99, 100, 68, 85, 78]
Взгляните на функцию ниже. Она возвращает список, содержащий десять чисел.
def ten_numbers():
numbers = []
for i in range(1, 11):
numbers.append(i)
return numbers
print(ten_numbers())
#result: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Еще один пример. В этот раз мы передаем несколько аргументов в функцию.
def miles_ran(week_1, week_2, week_3, week_4):
return [week_1, week_2, week_3, week_4]
monthly_mileage = miles_ran(25, 30, 28, 40)
print(monthly_mileage)
#result: [25, 30, 28, 40]
Спутать кортеж со списком довольно просто. Все-таки обе структуры хранят несколько значений. Важно запомнить ключевые отличия:
- Кортежи изменять нельзя.
- Списки изменять можно.
Словари
Словарь — структура, в которой хранятся пары значений в виде «ключ-значение». Заключены эти значения в фигурные скобки {}. Каждому ключу соответствует свое значение.
Рассмотрим пример. В следующем словаре содержатся имена сотрудников. Имя сотрудника — ключ, его должность — значение.
employees = {
"Джек": "Инженер",
"Мэри": "Менеджер",
"Генри": "Писатель",
}
Пример функции, возвращающей словарь в виде «ключ-значение».
def city_country(city, country):
location = {}
location[city] = country
return location
favorite_location = city_country("Бостон", "США")
print(favorite_location)
# result: {'Бостон': 'США'}
В примере выше «Бостон» — ключ, а «США» — значение.
Мы проделали долгий путь… Подытожим — вы можете вернуть несколько значений из функции и существует несколько способов сделать это.

