Що таке іменовані кортежі (namedtuple) в Python
Іменовані кортежі (namedtuple) — це розширення стандартних кортежів (tuples) у мові Python, яке надається модулем collections. Завдяки їм можна звертатися до елементів не лише за індексом, як у звичайних кортежах, а й за іменами полів. Так ви покращуєте код, роблячи його читабельним під час роботи з такими даними, як координати чи списки.
Щоб створити іменований кортеж, необхідно імпортувати функцію namedtuple з модуля collections і передати їй ім’я нового типу і список полів.
from collections import namedtuple
# Створення типу кортежу Point з полями x та y
Point = namedtuple('Point', ['x', 'y'])
# Створення екземпляра Point
p = Point(100, 200)
Після створення об’єкта іменованого кортежу ви можете звернутися до полів по імені, приблизно так само, як до атрибутів:
print(p.x) # Виводить: 100 print(p.y) # Виводить: 200
Оскільки іменовані кортежі базуються на стандартних кортежах, це забезпечує доступність до елементів за індексом:
print(p[0]) # Виводить: 100 print(p[1]) # Виводить: 200
Іменовані кортежі підтримують розпакування, як стандартні кортежі:
x, y = p print(x) # Виводить: 100 print(y) # Виводить: 200
Іменовані кортежі також мають вбудовані методи, що робить їх дуже корисними для розробників:
data = [30, 40] p2 = Point._make(data) print(p2) # Виводить: Point(x=30, y=40)
print(p._asdict()) # Виводить: {'x': 10, 'y': 20}
p3 = p._replace(x=50) print(p3) # Виводить: Point(x=50, y=20)
print(Point._fields) # Виводить: ('x', 'y')
Припустимо, нам потрібно опрацювати інформацію про погоду в Нью-Йорку. Завдяки навичкам роботи з іменованими кортежами це можна зробити ось так:
from collections import namedtuple
# Іменований кортеж для зберігання даних про погоду
Weather = namedtuple('Weather', ['city', 'temperature', 'condition'])
# Створюємо кілька записів
weather_today = Weather(city="New York", temperature=25, condition="Sunny")
weather_yesterday = Weather(city="New York", temperature=22, condition="Cloudy")
# Доступ до полів
print(f"Сьогодні в {weather_today.city} температура {weather_today.temperature}°C і {weather_today.condition}.")
# Виведе: Сьогодні в New York температура 25 ° C і Sunny.
# Порівняння даних
if weather_today.temperature > weather_yesterday.temperature:
print("Сьогодні тепліше, ніж учора.")
else:
print("Сьогодні холодніше, ніж учора.")
Ось ще один приклад. Тут ми працюємо з банківськими рахунками.
from collections import namedtuple
# Іменований кортеж для банківського рахунку
BankAccount = namedtuple('BankAccount', ['account_number', 'holder_name', 'balance']))
# Створюємо кілька рахунків
account1 = BankAccount('123456', 'John Doe', 1500.0)
account2 = BankAccount('654321', 'Jane Doe', 2500.0)
# Доступ до даних рахунку
print(f"Власник рахунку {account1.account_number}: {account1.holder_name}, баланс: ${account1.balance}")
# Виведе: Власник рахунку 123456: John Doe, баланс: $1500.0
# Перевірка балансу та заміна
if account1.balance < 2000:
updated_account1 = account1._replace(balance=2000.0)
print(f"Баланс оновлено: ${updated_account1.balance}") # Виведе: Баланс оновлено: $2000.0
Іменовані кортежі можуть стати в нагоді, коли вам потрібно зберігати невеликі незмінні структури даних з фіксованим набором атрибутів. Також вони нерідко застосовуються для представлення записів з баз даних, читання даних з файлів, обробки результатів обчислень та інших завдань, де необхідне поєднання продуктивності, простоти доступу до даних та читабельності коду.
З іншого боку, є ситуації, коли такі кортежі недоречні. Від роботи з іменованими кортежами краще відмовитись:
Як бачите, іменовані кортежі в Python — це зручний спосіб обробки структур даних, який має інтуїтивно зрозумілий доступ до елементів за їх найменуванням. Вони корисні для простих незмінних структур даних, таких як точки, координати або записи з фіксованими атрибутами. Але якщо потрібна змінність, складна логіка, динамічна структура, методи, наслідування чи контроль даних, тоді розробнику краще використовувати інші структури: наприклад, класи чи словник.
За дев’ять місяців 2025 року українська ІТ-компанія FAVBET Tech перерахувала до державного бюджету понад 650…
Microsoft впроваджує деякі суттєві зміни до свого помічника Copilot. По-перше, з’явилася нова функція груп, яка…
Компанія Google додає в свій сервіс відеозв'язку Meet «кімнати очікування», які покращують контроль над онлайн-зустріччю…
OpenAI додає в ChatGPT функцію під назвою Company knowledge. Вона працює на базі версії GPT-5,…
Команда PyTorch випустила фреймворк з відкритим кодом Monarch, який дозволяє Python-розробникам програмувати розподілені системи так,…
Розробник Девід Додда каже, що був лише «за 30 секунд» від запуску шкідливого програмного забезпечення…