Чем namedtuple из модуля collections удобнее обычного tuple при хранении записей вида (имя, возраст, город)?

AДоступ к полям по имени через атрибут: user.name вместо user[0]
BВозможность изменять поля после создания: user.name = 'Иван'
CАвтоматическая валидация типов при создании: User(name=1) вызовет TypeError
DХранение данных внутри dict, а не tuple, для быстрого поиска по ключу
Правильный ответ. namedtuple позволяет обращаться к полям по имени, а не только по индексу, что делает код читаемее.

Разбор

Обычный tuple позволяет доступ только по индексу: user[0], user[1]. С namedtuple можно писать user.name, user.age — это понятнее и снижает вероятность ошибок. При этом namedtuple остаётся неизменяемым, как обычный кортеж. Присвоение user.name = 'Иван' вызовет AttributeError. Валидации типов тоже нет — для этого используют dataclass или pydantic.

Проверь себя · 1/3разбор после ответа
Есть очередь задач q = deque(['task1', 'task2']). Что произойдёт после вызова q.appendleft('urgent')?
Тренировать Python в Telegram

Ещё вопросы по теме «Коллекции и структуры данных»