Variables
Progression
#Variables et types
À quoi ça sert ?
À quoi ça sert: nommer des valeurs pour les réutiliser et les composer. Comment ça marche en Python: un nom référence un objet (valeur + type), pas un « emplacement » fixe. Conséquences: mutabilité, identité vs égalité, portée (LEGB).
Objectifs d'apprentissage
- Comprendre que les noms référencent des valeurs (pas des cases mémoire fixes).
- Manipuler les types de base et conversions simples.
- Expliquer la résolution des noms (LEGB) et éviter les pièges courants.
pythonpython
1x = 32y = 2.53nom = "Ada"4vrai = True5print(x + y, nom.upper(), vrai)
Les noms doivent être explicites et en snake_case
. Les affectations lient un nom à une valeur, pas à un « emplacement » fixe: a = b
copie une référence.
#Identité vs égalité, mutabilité
- Égalité
==
compare les valeurs; identitéis
compare les objets (même adresse logique). - Types immuables (
int
,str
,tuple
) ne changent pas; les opérations créent de nouveaux objets. Les mutables (list
,dict
,set
) changent en place.
pythonpython
1xs = [1,2]; ys = xs2ys.append(3)3print(xs) # [1, 2, 3] (même objet)
#Portée des noms (LEGB)
- Local → Enclosing → Global → Builtins. Éviter
global
/nonlocal
sauf cas pédagogiques; préférez retourner des valeurs.
#Nombres et opérateurs
- Arithmétiques:
+ - * / // % **
- Comparaisons:
== != < <= > >=
- Logiques:
and or not
pythonpython
1a, b = 7, 32print(a // b, a % b, a ** b)
#Chaînes de caractères
- Concaténation:
'a' + 'b'
- Interpolation:
f"{nom} a {age} ans"
- Méthodes utiles:
.strip()
,.split()
,.join()
pythonpython
1prenom, age = 'Ada', 362msg = f"{prenom} a {age} ans"3print(msg, msg.split())
#Playground
Chargement de l’éditeur...
#Exercices
- Écrire un programme qui convertit des secondes en
HH:MM:SS
. - Demander un nom et afficher un message de bienvenue en majuscules.
- Calculer l’IMC à partir d’un poids/taille saisis et afficher la catégorie (approx.).
- Manipuler des dates et heures : calculer le nombre de jours entre deux dates.
#Solutions (exemples)
#À retenir
Bonnes pratiques
- Nommer les variables clairement (snake_case).
- Préférer l’interpolation (f-strings) aux concaténations.
- Connaître les types de base et conversions simples.
Erreurs fréquentes
- Confondre
'2' + 2
(erreur de type) avec2 + 2
. - Réutiliser un nom de fonction builtin (ex:
list
,str
) comme variable. - Oublier que l’affectation crée/rebinde une référence (les listes sont mutables).
Alias involontaires
Copier une référence (ex: ys = xs
) lie deux noms au même objet. Pour copier les données: xs.copy()
(superficiel) ou copy.deepcopy
si nécessaire.
#Quiz rapide
Quelle expression retourne True ?
Quelle f-string est valide ?
#Animation: portée et résolution des noms (LEGB)
Builtins:
len
seulementVitesse
Local✓ trouvé
"local"
Enclosing
(non défini)
Global
"global"
Builtins
(non défini)
Pseudo‑code (LEGB)
x = "global" # Global
def outer():
# (pas de x ici)
def inner():
x = "local"
print(x) # LEGB
inner()
outer()
print(x) → "local" (dans Local)