Python Academy · Les

NamedTuple-basisprincipes

Maak lichtgewicht onveranderlijke records

Les 3 van 413 stappen

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.

  • namedtuple voegt 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.
  • _fields vermeldt de namen; defaults stelt standaardwaarden in.
Gratis beginnen

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

  1. De Enum-klasse
  2. IntEnum en Flag
  3. NamedTuple-basisprincipes
  4. typing.NamedTuple
← Terug naar Python Academy