Сопоставление имен элементам последовательности в Python

Сопоставление имен элементам последовательности в Python

Сопоставление имен элементам последовательности в 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.

Источник

НЕТ КОММЕНТАРИЕВ

Оставить комментарий