NamedTuple-basisprincipes
Maak lichtgewicht onveranderlijke records
NamedTuple-basisprincipes is een gratis Python Academy-les op CoddyKit. Dit is les 3 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Python Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Python Academy bevat in totaal 4 lessen.
Wat is een NamedTuple?
Een tuple met naamvelden is een tuple waarvan de posities ook namen hebben. Je krijgt de lichte, onveranderlijke eigenschappen van een tuple, plus leesbare toegang via attributen. Dit is perfect voor kleine records.
Het probleem met gewone tuples
Gewone tuples zijn positioneel, dus je moet onthouden wat elke index betekent. Code zoals p[0] en p[1] is gemakkelijk verkeerd te gebruiken.
point = (1, 2)
print(point[0]) # x?
print(point[1]) # y?Maken met namedtuple
De fabrieksfunctie collections.namedtuple bouwt een nieuwe subklasse van tuple. Geef de typenaam en de veldnamen mee.
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
print(p)Toegang op naam
Nu kun je velden op naam lezen in plaats van op index, waardoor de code zichzelf uitlegt.
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
print(p.x)
print(p.y)Nog steeds een tuple
Een tuple met naamvelden is nog steeds een echte tuple, dus indexering, uitpakken en iteratie werken zoals gewoonlijk.
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
print(p[0])
x, y = p
print(x, y)Onveranderlijkheid
Net als alle tuples zijn tuples met naamvelden onveranderlijk. Als je een veld probeert toe te wijzen, ontstaat een 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)Een aangepaste kopie maken
Omdat je de instantie niet kunt wijzigen, gebruik je de methode _replace() om een nieuwe instantie te maken waarin enkele velden zijn aangepast.
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
q = p._replace(y=99)
print(p)
print(q)Naar een dictionary converteren
De methode _asdict() retourneert de velden als een dictionary, wat handig is voor serialisatie of logging.
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
print(p._asdict())Velden inspecteren
Het attribuut _fields vermeldt de veldnamen. Dit is handig voor algemene code die de velden van een record doorloopt.
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
print(Point._fields)Standaardwaarden
Geef standaardwaarden op met het argument defaults. Standaardwaarden gelden voor de meest rechtse velden, net als standaardwaarden voor parameters van functies.
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y', 'z'], defaults=[0])
print(Point(1, 2))
print(Point(1, 2, 9))Meerdere waarden retourneren
Tuples met naamvelden zijn bijzonder geschikt als retourwaarden van functies. Retourneer in plaats van een anonieme tuple een tuple met namen, zodat aanroepers velden op naam kunnen lezen.
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)Korte controle
Hoe maak je een aangepaste kopie van een instantie van een tuple met naamvelden?
Samenvatting
Je hebt geleerd lichte, onveranderlijke records te maken.
namedtuplevoegt veldnamen toe aan tuples.- Je kunt velden op naam of op index benaderen; uitpakken werkt nog steeds.
- Gebruik
_replace()voor aangepaste kopieën en_asdict()om te converteren. _fieldsvermeldt de namen;defaultsstelt standaardwaarden in.
Leer Python met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 76
- Lessen
- 320
Veelgestelde vragen
Is de les “NamedTuple-basisprincipes” gratis?
Ja — de volledige tekst van “NamedTuple-basisprincipes” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Python Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Python Academy bevat in totaal 4 lessen.
Wat leer ik in “NamedTuple-basisprincipes”?
Maak lichtgewicht onveranderlijke records Je oefent met Python Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Python Academy te beginnen?
Ervaring vooraf is niet nodig. Python Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.
Hoe lang duurt de les “NamedTuple-basisprincipes”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Python Academy?
Ja. Elke les over Python Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- De Enum-klasse
- IntEnum en Flag
- NamedTuple-basisprincipes
- typing.NamedTuple