Как вернуть несколько значений в Python: простое руководство
С Python мы можем возвращать несколько значений сразу. Очевидно, большинство функций в Python возвращают одно значение, обычно результат работы, сделанной этой функцией. В этой статье вы узнаете, что вы можете возвращать несколько значений в Python тоже, и вам не нужен словарь, список или дата-класс для этого.
Содержание
Возврат нескольких значений с кортежем
Всё, что вам нужно сделать — перечислить ваши значения после оператора return, разделенные запятыми. Вот пример того, как вернуть несколько значений и как назначить их нескольким переменным сразу:
def get_user(id):
# fetch user from database
# ....
return name, birthdate
name, birthdate = get_user(4)
Что мы на самом деле делаем здесь — возвращаем кортеж. Мы могли бы написать return (name, birthdate) тоже, с тем же эффектом. И если вы спрашиваете, можете ли вы возвращать больше двух значений таким образом: да, можете!
Самое очевидное преимущество возврата нескольких значений в Python с использованием кортежа в том, что мы можем напрямую назначить результат нескольким переменным. Это супер чисто и лаконично, как и задумано в Python.
Альтернативные способы в Python вернуть несколько значений
Использование кортежей для возврата нескольких значений в Python нормально для ограниченного количества значений. Потому что мы можем напрямую распаковать их в четко названные переменные, это на самом деле приводит к очень читаемому, лаконичному коду.
Однако, как только вы превышаете 2 или 3 значения, вы должны посмотреть в сторону дата-класса, чтобы держать ваш код чистым и читаемым. Дата-класс — это по сути обычный класс, аннотированный с @dataclass, чтобы дать ему несколько удобных дополнительных функций.
Если дата-класс не вариант, потому что вы работаете на старой версии Python, например, вы также можете рассматривать возврат:
- Python-словаря,
- Python-списка,
- или обычного класса (объекта).
Что лучше зависит от типа данных, которые вы возвращаете. Если данные хорошо ложатся в список, используйте список. В случае, если данные имеют ключи и значения, используйте словарь. Если ваши данные более сложные, вам может даже понадобиться положить несколько списков внутри словаря. Просто помните, в какой-то момент будет чище использовать (дата-)класс.
Продолжайте учиться
- Узнайте всё о Python кортежах и Python словарях
- Мое введение в функции
- Более продвинутые трюки Python-функций в нашем глубоком погружении в Python-функции
Python
- Освоение типов данных в Python: практическое руководство
- Мастерство операторов Python: Полное руководство
- Оператор pass в Python: практическое руководство
- Аргументы функций в Python: позиционные, именованные и параметры по умолчанию
- Словари в Python: создание, манипуляции и продвинутые техники
- Итераторы в Python: как они работают и как создать свои
- Замыкания в Python: как вложенные функции захватывают переменные
- Модуль datetime в Python: практическое руководство по датам, времени и часовым поясам
- Освоение Python time.sleep(): лучшие практики, многопоточность и реальные примеры
- Освоение yield в Python: генератор против return — практическое руководство