Aller au contenu principal

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) avec 2 + 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 expression retourne True ?
Quelle f-string est valide ?
Quelle f-string est valide ?

#Animation: portée et résolution des noms (LEGB)

Builtins: len seulement
Vitesse
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)