0Pricing
Python Academy · Lekcja

Podstawy NamedTuple

Twórz lekkie, niezmienne rekordy

Podstawy NamedTuple to bezpłatna lekcja Python Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Python Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Python Academy zawiera 4 lekcji w sumie.

Czym jest NamedTuple?

Nazwana krotka to krotka, której pozycje mają również nazwy. Otrzymuje się w ten sposób lekką i niemutowalną strukturę krotki oraz czytelny dostęp za pomocą atrybutów. Jest idealna dla małych rekordów.

Problem ze zwykłymi krotkami

Zwykłe krotki są oparte na pozycjach, więc trzeba pamiętać, co oznacza każdy indeks. Kod taki jak p[0] i p[1] łatwo napisać niepoprawnie.

point = (1, 2)
print(point[0])  # x?
print(point[1])  # y?

Tworzenie za pomocą namedtuple

Fabryka collections.namedtuple tworzy nową podklasę krotki. Należy przekazać nazwę typu oraz nazwy pól.

from collections import namedtuple

Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
print(p)

Dostęp według nazwy

Od tej pory można odczytywać pola według nazw zamiast indeksów, dzięki czemu kod staje się zrozumiały bez dodatkowych wyjaśnień.

from collections import namedtuple

Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
print(p.x)
print(p.y)

To wciąż krotka

Nazwana krotka nadal jest prawdziwą krotką, więc indeksowanie, rozpakowywanie i iterowanie działają jak zwykle.

from collections import namedtuple

Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
print(p[0])
x, y = p
print(x, y)

Niemutowalność

Podobnie jak wszystkie krotki, nazwane krotki są niemutowalne. Próba przypisania wartości do pola powoduje zgłoszenie AttributeError.

from collections import namedtuple

Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
try:
    p.x = 99
except AttributeError as e:
    print('Cannot modify:', e)

Tworzenie zmodyfikowanej kopii

Ponieważ nie można jej modyfikować, należy użyć metody _replace(), aby utworzyć nową instancję ze zmienionymi wybranymi polami.

from collections import namedtuple

Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
q = p._replace(y=99)
print(p)
print(q)

Konwertowanie na słownik

Metoda _asdict() zwraca pola jako słownik, co jest przydatne podczas serializacji lub rejestrowania informacji.

from collections import namedtuple

Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
print(p._asdict())

Sprawdzanie pól

Atrybut _fields zawiera nazwy pól. Jest przydatny w uniwersalnym kodzie, który iteruje po polach rekordu.

from collections import namedtuple

Point = namedtuple('Point', ['x', 'y'])
print(Point._fields)

Wartości domyślne

Wartości domyślne należy przekazać za pomocą argumentu defaults. Wartości domyślne dotyczą pól znajdujących się najbardziej na prawo, podobnie jak wartości domyślne parametrów funkcji.

from collections import namedtuple

Point = namedtuple('Point', ['x', 'y', 'z'], defaults=[0])
print(Point(1, 2))
print(Point(1, 2, 9))

Zwracanie wielu wartości

Nazwane krotki świetnie sprawdzają się jako wartości zwracane przez funkcje. Zamiast zwracać anonimową krotkę, należy zwrócić nazwaną, aby odbiorcy mogli odczytywać pola według nazw.

from collections import namedtuple

Stats = namedtuple('Stats', ['minimum', 'maximum'])

def analyze(nums):
    return Stats(min(nums), max(nums))

r = analyze([3, 1, 9, 4])
print(r.minimum, r.maximum)

Szybkie sprawdzenie

Jak utworzyć zmodyfikowaną kopię instancji nazwanej krotki?

Podsumowanie

Nauczyli się Państwo tworzyć lekkie, niemutowalne rekordy.

  • namedtuple dodaje nazwy pól do krotek.
  • Pola można odczytywać według nazwy lub indeksu, a rozpakowywanie nadal działa.
  • Do tworzenia zmodyfikowanych kopii służy _replace(), a do konwersji — _asdict().
  • _fields zawiera nazwy, a defaults ustawia wartości domyślne.

Często zadawane pytania

Czy lekcja „Podstawy NamedTuple” jest bezpłatna?

Tak — pełny tekst „Podstawy NamedTuple” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Python Academy, przejdź na CoddyKit PRO. Kurs Python Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Podstawy NamedTuple”?

Twórz lekkie, niezmienne rekordy Ćwiczysz Python Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Python Academy?

Nie wymagamy żadnego doświadczenia. Python Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Podstawy NamedTuple”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Python Academy?

Tak. Każda lekcja Python Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Klasa Enum
  2. IntEnum i Flag
  3. Podstawy NamedTuple
  4. typing.NamedTuple
← Powrót do Python Academy