Grundlæggende om NamedTuple
Opret lette, uforanderlige poster
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.
namedtupletilføjer feltnavne til tupler.- Få adgang til felter efter navn eller indeks; udpakning fungerer stadig.
- Brug
_replace()til ændrede kopier og_asdict()til konvertering. _fieldsviser navnene, ogdefaultsangiver standardværdier.
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
- Enum-klassen
- IntEnum og Flag
- Grundlæggende om NamedTuple
- typing.NamedTuple