Сопоставление имен элементам последовательности в Python
Здравствуйте. В сегодняшней статье мы рассмотрим как пользоваться именованными кортежами - namedtuple в Python. Заодно, познакомимся со встроенным модулем collections.
Постановка задачи
У вас есть код, который обращается к элементам списка или кортежа по позиции, но иногда это несколько затрудняет чтение кода. Вы также хотели бы быть менее зависимыми от положения в структуре, получая доступ к элементам по имени
Решение
collections.namedtuple() предоставляет эти преимущества, добавляя при этом минимальные накладные расходы по сравнению с использованием обычного объекта tuple, collections.namedtuple на самом деле является фабричным методом, который возвращает подкласс стандартного типа кортежей Python. Вы вводите ему имя типа и поля, которые он должен иметь, и он возвращает класс, который вы можете создать, передавая значения для определенных вами полей и так далее. Например:
from collections import namedtuple
Subscriber = namedtuple('Article', ['writed', 'posted'])
sub = Subscriber('Python основы', '2023-10-19')
print(sub)
print(sub.writed)
print(sub.posted)
Хотя экземпляр namedtuple выглядит как обычный экземпляр класса, он взаимозаменяем с кортежем и поддерживает все обычные операции с кортежами, такие как индексация и распаковка. Например:
print(len(sub))
writed, posted = sub
print(writed, posted)
Таким образом, основным вариантом использования именованных кортежей является отделение вашего кода от положения элементов, которыми он манипулирует. Итак, если вы возвращаете большой список кортежей из вызова базы данных, а затем манипулируете ими, обращаясь к позиционным элементам, ваш код может прерваться, если, скажем, вы добавили новый столбец в свою таблицу. Это не так, если вы сначала преобразуете возвращаемые кортежи в namedtuples.
-
- Михаил Русаков
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.