0Pricing
Python Academy · Leçon

Les bases de NamedTuple

Créer des enregistrements immuables et légers

Les bases de NamedTuple est une leçon Python Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Python Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Python Academy comprend 4 leçons au total.

Qu'est-ce qu'un tuple nommé ?

Un tuple nommé est un tuple dont les positions possèdent également des noms. Vous bénéficiez de la nature légère et immuable d'un tuple, ainsi que d'un accès lisible aux attributs. C'est idéal pour les petits enregistrements.

Le problème des tuples classiques

Les tuples classiques sont positionnels, vous devez donc vous souvenir de la signification de chaque index. Un code comme p[0] et p[1] est facile à interpréter incorrectement.

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

Créer avec namedtuple

La fabrique collections.namedtuple construit une nouvelle sous-classe de tuple. Transmettez-lui le nom du type et les noms des champs.

from collections import namedtuple

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

Accéder par nom

Vous pouvez maintenant lire les champs par leur nom plutôt que par leur index, ce qui rend le code explicite.

from collections import namedtuple

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

Cela reste un tuple

Un tuple nommé reste un véritable tuple : l'indexation, le décompactage et l'itération fonctionnent donc comme d'habitude.

from collections import namedtuple

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

Immutabilité

Comme tous les tuples, les tuples nommés sont immuables. Toute tentative d'affecter une valeur à un champ lève 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)

Créer une copie modifiée

Comme vous ne pouvez pas le modifier, utilisez la méthode _replace() pour produire une nouvelle instance dont certains champs ont changé.

from collections import namedtuple

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

Convertir en dictionnaire

La méthode _asdict() renvoie les champs sous forme de dictionnaire, ce qui est utile pour la sérialisation ou la journalisation.

from collections import namedtuple

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

Examiner les champs

L'attribut _fields répertorie les noms des champs. Il est pratique pour le code générique qui parcourt les champs d'un enregistrement.

from collections import namedtuple

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

Valeurs par défaut

Fournissez les valeurs par défaut avec l'argument defaults. Elles s'appliquent aux champs les plus à droite, comme les valeurs par défaut des paramètres de fonction.

from collections import namedtuple

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

Renvoyer plusieurs valeurs

Les tuples nommés sont particulièrement adaptés aux valeurs renvoyées par une fonction. Au lieu de renvoyer un tuple anonyme, renvoyez-en un nommé afin que les appelants puissent lire les champs par leur nom.

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)

Vérification rapide

Comment créer une copie modifiée d'une instance de tuple nommé ?

Récapitulatif

Vous avez appris à créer des enregistrements immuables et légers.

  • namedtuple ajoute des noms de champs aux tuples.
  • Accédez aux champs par leur nom ou par leur index ; le décompactage fonctionne toujours.
  • Utilisez _replace() pour créer des copies modifiées et _asdict() pour effectuer la conversion.
  • _fields répertorie les noms et defaults définit les valeurs par défaut.

Questions Fréquemment Posées

La leçon « Les bases de NamedTuple » est-elle gratuite ?

Oui — le texte complet de « Les bases de NamedTuple » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Python Academy, passe à CoddyKit PRO. Le cours Python Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Les bases de NamedTuple » ?

Créer des enregistrements immuables et légers Tu pratiques Python Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Python Academy ?

Aucune expérience préalable n'est requise. Python Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.

Combien de temps prend la leçon « Les bases de NamedTuple » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Python Academy ?

Oui. Chaque leçon Python Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. La classe Enum
  2. IntEnum et Flag
  3. Les bases de NamedTuple
  4. typing.NamedTuple
← Retour à Python Academy