Python Academy · Lektion

Grundlæggende om NamedTuple

Opret lette, uforanderlige poster

Lektion 3 af 413 trin

Grundlæggende om NamedTuple er en gratis Python Academy-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Python Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Python Academy-kurset indeholder 4 lektioner i alt.

Hvad er en NamedTuple?

En navngivet tupel er en tupel, hvis positioner også har navne. Du får en tupels lette og uforanderlige egenskaber kombineret med læsbar attributadgang. Den er perfekt til små dataposter.

Problemet med almindelige tupler

Almindelige tupler er positionsbaserede, så du skal huske, hvad hvert indeks betyder. Kode som p[0] og p[1] er let at få galt i halsen.

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

Oprette med namedtuple

Fabrikfunktionen collections.namedtuple opretter en ny tupelunderklasse. Angiv typenavnet og feltnavnene.

from collections import namedtuple

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

Adgang efter navn

Nu kan du læse felter efter navn i stedet for efter indeks, hvilket gør koden selvforklarende.

from collections import namedtuple

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

Stadig en tupel

En navngivet tupel er stadig en rigtig tupel, så indeksering, udpakning og gennemløb fungerer som normalt.

from collections import namedtuple

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

Uforanderlighed

Som alle tupler er navngivne tupler uforanderlige. Hvis du forsøger at tildele et felt, rejser det 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)

Oprette en ændret kopi

Da du ikke kan ændre den, skal du bruge metoden _replace() til at oprette en ny instans med nogle ændrede felter.

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 ordbog

Metoden _asdict() returnerer felterne som en ordbog, hvilket er nyttigt til serialisering eller logning.

from collections import namedtuple

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

Undersøge felter

Attributten _fields viser feltnavnene. Den er praktisk i generisk kode, der gennemløber felterne i en datapost.

from collections import namedtuple

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

Standardværdier

Angiv standardværdier med argumentet defaults. Standardværdier gælder for felterne længst til højre, ligesom standardværdier for funktionsparametre.

from collections import namedtuple

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

Returnere flere værdier

Navngivne tupler er særligt nyttige som returværdier fra funktioner. I stedet for at returnere en anonym tupel kan du returnere en navngivet, så kaldende kode kan læse felterne efter 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)

Hurtigt tjek

Hvordan opretter du en ændret kopi af en instans af en navngivet tupel?

Opsummering

Du har lært at oprette lette, uforanderlige dataposter.

  • namedtuple tilføjer feltnavne til tupler.
  • Få adgang til felter efter navn eller indeks; udpakning fungerer stadig.
  • Brug _replace() til ændrede kopier og _asdict() til konvertering.
  • _fields viser navnene, og defaults angiver standardværdier.
Gratis at komme i gang

Lær Python med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
76
Lektioner
320

Ofte stillede spørgsmål

Er lektionen “Grundlæggende om NamedTuple” gratis?

Ja — hele teksten til “Grundlæggende om NamedTuple” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Python Academy-kurset, skal du opgradere til CoddyKit PRO. Python Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Grundlæggende om NamedTuple”?

Opret lette, uforanderlige poster Du øver dig i Python Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Python Academy?

Der kræves ingen tidligere erfaring. Python Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.

Hvor lang tid tager lektionen “Grundlæggende om NamedTuple”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Python Academy-lektion?

Ja. Alle Python Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Enum-klassen
  2. IntEnum og Flag
  3. Grundlæggende om NamedTuple
  4. typing.NamedTuple
← Tilbage til Python Academy