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.
namedtupleajoute 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. _fieldsrépertorie les noms etdefaultsdé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
- La classe Enum
- IntEnum et Flag
- Les bases de NamedTuple
- typing.NamedTuple