Python Academy · leksjon

Grunnleggende om NamedTuple

Opprett lette, uforanderlige poster

Leksjon 3 av 413 trinn

Grunnleggende om NamedTuple er en gratis leksjon i Python Academy på CoddyKit. Dette er leksjon 3 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Python Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Python Academy inneholder totalt 4 leksjoner.

Hva er en NamedTuple?

En navngitt tuple er en tuple der posisjonene også har navn. Du får tuplets lette og uforanderlige egenskaper, i tillegg til lesbar tilgang via attributter. Den egner seg perfekt for små poster.

Problemet med vanlige tupler

Vanlige tupler er posisjonelle, så du må huske hva hver indeks betyr. Kode som p[0] og p[1] er lett å få feil.

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

Opprette med namedtuple

Fabrikkfunksjonen collections.namedtuple bygger en ny tuple-underklasse. Oppgi typenavnet og feltnavnene.

from collections import namedtuple

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

Tilgang med navn

Nå kan du lese felt med navn i stedet for indeks, noe som gjør koden selvforklarende.

from collections import namedtuple

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

Fortsatt en tuple

En navngitt tuple er fortsatt en ekte tuple, så indeksering, utpakking og iterasjon fungerer som vanlig.

from collections import namedtuple

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

Uforanderlighet

På samme måte som alle tupler er navngitte tupler uforanderlige. Hvis du prøver å tilordne et felt, utløses 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)

Lage en endret kopi

Siden du ikke kan endre den, bruker du metoden _replace() for å lage en ny instans med enkelte endrede felt.

from collections import namedtuple

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

Konvertere til en ordbok

Metoden _asdict() returnerer feltene som en ordbok, noe som er nyttig for serialisering eller logging.

from collections import namedtuple

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

Undersøke felt

Attributtet _fields viser feltnavnene. Det er nyttig i generell kode som itererer over feltene i en post.

from collections import namedtuple

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

Standardverdier

Oppgi standardverdier med argumentet defaults. Standardverdiene gjelder for feltene lengst til høyre, på samme måte som standardverdier for funksjonsparametere.

from collections import namedtuple

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

Returnere flere verdier

Navngitte tupler egner seg svært godt som returverdier fra funksjoner. I stedet for å returnere en anonym tuple returnerer du en navngitt tuple, slik at den som kaller funksjonen kan lese feltene med navn.

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)

Kort sjekk

Hvordan lager du en endret kopi av en navngitt tuple-instans?

Oppsummering

Du har lært å lage lette, uforanderlige poster.

  • namedtuple legger til feltnavn i tupler.
  • Få tilgang til felt med navn eller indeks; utpakking fungerer fortsatt.
  • Bruk _replace() for endrede kopier og _asdict() for å konvertere.
  • _fields viser navnene, og defaults angir standardverdier.
Gratis å komme i gang

Lær deg Python med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
76
Leksjoner
320

Ofte stilte spørsmål

Er leksjonen «Grunnleggende om NamedTuple» gratis?

Ja – hele teksten i «Grunnleggende om NamedTuple» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Python Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Python Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Grunnleggende om NamedTuple»?

Opprett lette, uforanderlige poster Du øver på Python Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Python Academy?

Ingen tidligere erfaring er nødvendig. Python Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.

Hvor lang tid tar leksjonen «Grunnleggende om NamedTuple»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Python Academy-leksjonen?

Ja. Alle Python Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Enum-klassen
  2. IntEnum og Flag
  3. Grunnleggende om NamedTuple
  4. typing.NamedTuple
← Tilbake til Python Academy