Python функция возвращает словарь

Возврат нескольких значений из функции

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]

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

Кортежи

Кортеж — упорядоченная, неизменяемая последовательность. То есть, значения внутри кортежа мы изменять не можем.

Мы можем использовать кортеж, например, для хранения информации о человеке (о его имени, возрасте, месте жительства).

Пример функции, которая возвращает кортеж:

def person(): return "Боб", 32, "Бостон" print(person()) # result: ('Боб', 32, 'Бостон')

Заметьте, что в предложении return мы не использовали круглые скобки для возврата значения. Это потому, что кортеж можно вернуть, просто отделив каждый элемент запятой, как в нашем примере.

«Кортеж образуют запятые, а не круглые скобки» — так написано в документации. Но для создания пустых кортежей круглые скобки необходимы. Также это помогает избежать путаницы.

Читайте также:  Отправка формы на AJAX

Пример функции, которая использует () для возврата кортежа:

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]

Спутать кортеж со списком довольно просто. Все-таки обе структуры хранят несколько значений. Важно запомнить ключевые отличия:

Словари

Словарь — структура, в которой хранятся пары значений в виде «ключ-значение». Заключены эти значения в фигурные скобки <> . Каждому ключу соответствует свое значение.

Рассмотрим пример. В следующем словаре содержатся имена сотрудников. Имя сотрудника — ключ, его должность — значение.

Пример функции, возвращающей словарь в виде «ключ-значение».

def city_country(city, country): location = <> location[city] = country return location favorite_location = city_country(«Бостон», «США») print(favorite_location) # result:

В примере выше «Бостон» — ключ, а «США» — значение.

Мы проделали долгий путь… Подытожим — вы можете вернуть несколько значений из функции и существует несколько способов сделать это.

Источник

Как вернуть сразу несколько значений из функции в Python 3

Сегодня мы делимся с вами переводом статьи, которую нашли на сайте medium.com. Автор, Vivek Coder, рассказывает о способах возврата значений из функции в Python и объясняет, как можно отличить друг от друга разные структуры данных.

Фото с сайта Unsplash. Автор: Vipul Jha

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

def hours_to_write(happy_hours): week1 = happy_hours + 2 week2 = happy_hours + 4 week3 = happy_hours + 6 return [week1, week2, week3] print(hours_to_write(4)) # [6, 8, 10]

Структуры данных в Python используются для хранения коллекций данных, которые могут быть возвращены посредством оператора return . В этой статье мы рассмотрим способы возврата нескольких значений с помощью подобных структур (словарей, списков и кортежей), а также с помощью классов и классов данных (Python 3.7+).

Способ 1: возврат значений с помощью словарей

Словари содержат комбинации элементов, которые представляют собой пары «ключ — значение» ( key:value ), заключенные в фигурные скобки ( <> ).

Словари, на мой взгляд, это оптимальный вариант для работы, если вы знаете ключ для доступа к значениям. Далее представлен словарь, где ключом является имя человека, а соответствующим значением — возраст.

А теперь перейдем к функции, которая возвращает словарь с парами «ключ — значение».

# A Python program to return multiple values using dictionary # This function returns a dictionary def people_age(): d = dict(); d['Jack'] = 30 d['Kim'] = 28 d['Bob'] = 27 return d d = people_age() print(d) #

Способ 2: возврат значений с помощью списков

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

Списки — одна из наиболее универсальных структур данных в Python, потому что им не обязательно сохранять однородность (в них можно включать строки, числа и элементы). Иногда списки даже используют вместе со стеками или очередями.

# A Python program to return multiple values using list def test(): str1 = "Happy" str2 = "Coding" return [str1, str2]; list = test() print(list) # ['Happy', 'Coding']

Вот пример, где возвращается список с натуральными числами.

def natural_numbers(numbers = []): for i in range(1, 16): numbers.append(i) return numbers print(natural_numbers()) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]

Способ 3: возврат значений с помощью кортежей

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

Кортежи напоминают списки, однако их нельзя изменить после того, как они были объявлены. А еще, как правило, кортежи быстрее в работе, чем списки. Кортеж можно создать, отделив элементы запятыми: x, y, z или (x, y, z) .

На этом примере кортеж используется для хранения данных о сотруднике (имя, опыт работы в годах и название компании).

А вот пример написания функции для возврата кортежа.

# A Python program to return multiple values using tuple # This function returns a tuple def fun(): str1 = "Happy" str2 = "Coding" return str1, str2; # we could also write (str1, str2) str1, str2= fun() print(str1) print(str2) # Happy Coding

Обратите внимание: мы опустили круглые скобки в операторе return , поскольку для возврата кортежа достаточно просто отделить каждый элемент запятой (как показано выше).

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

Чтобы лучше разобраться в кортежах, обратитесь к официальной документации Python 3 (документация приведена на английском языке. — Прим. ред.).

Ниже показан пример функции, которая использует для возврата кортежа круглые скобки.

def student(name, class): return (name, class) print(student("Brayan", 10)) # ('Brayan', 10)

Повторюсь, кортежи легко перепутать со списками (в конце концов, и те, и другие представляют собой контейнер, состоящий из элементов). Однако нужно помнить о фундаментальном различии: кортежи изменить нельзя, а списки — можно.

Способ 4: возврат значений с помощью объектов

Тут все так же, как в C/C++ или в Java. Можно просто сформировать класс (в C он называется структурой) для сохранения нескольких признаков и возврата объекта класса.

# A Python program to return multiple values using class class Intro: def __init__(self): self.str1 = "hello" self.str2 = "world" # This function returns an object of Intro def message(): return Intro() x = message() print(x.str1) print(x.str2) # hello world

Способ 5: возврат значений с помощью классов данных (Python 3.7+)

Классы данных в Python 3.7+ как раз помогают вернуть класс с автоматически добавленными уникальными методами, модулем typing и другими полезными инструментами.

from dataclasses import dataclass @dataclass class Item_list: name: str perunit_cost: float quantity_available: int = 0 def total_cost(self) -> float: return self.perunit_cost * self.quantity_available book = Item_list("better programming.", 50, 2) x = book.total_cost() print(x) print(book) # 100 Item_list(name='better programming.', perunit_cost=50, quantity_available=2)

Чтобы лучше разобраться в классах данных, обратитесь к официальной документации Python 3 (документация приведена на английском языке. — Прим. ред.).

Вывод

Цель этой статьи — ознакомить вас со способами возврата нескольких значений из функции в Python. И, как вы видите, этих способов действительно много.

Учите матчасть и постоянно развивайте свои навыки программирования. Спасибо за внимание!

Источник

Возвращение словаря

Функция может вернуть любое значение, нужное вам, в том числе и более сложную структуру данных (например, список или словарь). Так, следующая функция получает части имени и возвращает словарь, представляющий человека:

def build_person(first_name, last_name):

. .»»»Возвращает словарь с информацией о человеке.»»»

musician = build_person(‘jimi’, ‘hendrix’)

Функция build_person() получает имя и фамилию и сохраняет полученные значения в словаре в точке (1) . Значение first_name сохраняется с ключом ‘first’, а значение last_name — с ключом ‘last’. Весь словарь с описанием человека возвращается в точке (2). Возвращаемое значение выводится в точке (3) с двумя исходными фрагментами текстовой информации, теперь хранящимися в словаре:

Функция получает простую текстовую информацию и помещает ее в более удобную структуру данных, которая позволяет работать с информацией (помимо простого вывода). Строки ‘jimi’ и ‘hendrix’ теперь помечены как имя и фамилия. Функцию можно легко расширить так, чтобы она принимала дополнительные значения: — второе имя, возраст, профессию или любую другую информацию о человеке, которую вы хотите сохранить. Например, следующее изменение позволяет также сохранить возраст человека:

def build_person(first_name, last_name, age=»):

. .»»»Возвращает словарь с информацией о человеке.»»»

musician = build_person(‘jimi’, ‘hendrix’, age=27)

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

Источник

Возвращение нескольких значений из функции в Python

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

Использование кортежей

Самый простой способ — это использование кортежа. Например:

def calculate_metrics(data): metric1 = . metric2 = . metric3 = . return (metric1, metric2, metric3)

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

Использование словарей

Еще один подход — это использование словаря. Например:

def calculate_metrics(data): metric1 = . metric2 = . metric3 = . return

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

Использование классов

Также можно использовать классы для возврата нескольких значений. Например:

class Metrics: def __init__(self, metric1, metric2, metric3): self.metric1 = metric1 self.metric2 = metric2 self.metric3 = metric3 def calculate_metrics(data): metric1 = . metric2 = . metric3 = . return Metrics(metric1, metric2, metric3)

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

Использование списков

Наконец, можно использовать списки для возврата нескольких значений. Например:

def calculate_metrics(data): metric1 = . metric2 = . metric3 = . return [metric1, metric2, metric3]

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

Какой из этих подходов лучше использовать, во многом зависит от конкретной ситуации и предпочтений программиста.

Источник

Оцените статью