Explication de la leçon
Après cette leçon, tu seras capable de :
Les tuples regroupent des valeurs ordonnées, comme les listes, mais ne peuvent pas être modifiés sur place. Les parenthèses rendent les littéraux de tuples lisibles ; c'est en fait la virgule qui crée un tuple, raison pour laquelle un tuple à un seul élément nécessite une virgule finale : ("eu",).
Les indices fonctionnent comme avec les listes : la première valeur est à l'indice 0, et -1 lit la dernière. Lorsque tu connais le nombre de champs que contient un enregistrement, le décompactage les affecte tous en une seule fois : name, region = record. Python lève ValueError lorsque le nombre de cibles ne correspond pas au nombre de valeurs.
Le décompactage permet également d'échanger deux variables sans variable temporaire séparée. Contrairement à une liste, record[0] = value lève TypeError : construis un nouveau tuple si tu as besoin d'un enregistrement modifié.
L'indexation de tuple utilise les mêmes positions positives et négatives que l'indexation de liste.
endpoint = ("billing", "eu", 443)
print(endpoint[0])
print(endpoint[-1])Sortie :
billing
443Les parenthèses seules ne font que regrouper une expression ; une virgule indique un tuple à un seul élément.
region = ("apac",)
print(type(region).__name__)
print(len(region))Sortie :
tuple
1Le décompactage rend les champs clairs sans expressions d'indices répétées.
host = ("gateway", 8080, True)
service, port, online = host
print(f"{service}:{port} online={online}")Sortie :
gateway:8080 online=TruePython compacte les valeurs de droite et les affecte aux cibles de gauche.
primary = "east"
backup = "west"
primary, backup = backup, primary
print(f"Primary: {primary}")
print(f"Backup: {backup}")Sortie :
Primary: west
Backup: east| Objectif | Python |
|---|---|
| Créer un enregistrement | ("api", "eu") |
| Créer un tuple à un élément | ("api",) |
| Lire un élément | record[0] ou record[-1] |
| Décompacter les champs | service, region = record |
| Échanger des valeurs | a, b = b, a |
| Remplacer un tuple immuable | Construire un nouveau tuple |
("eu") est une chaîne de caractères, pas un tuple à un élément.ValueError.record[1] = "us" lève TypeError.