Scope (Portée des variables)

La portée des variables, c'est un peu comme décider où dans ta maison tes affaires peuvent être utilisées ou trouvées. Imagine que ta maison représente ton programme informatique.

  1. Variable globale : Si tu places quelque chose dans le salon (variable globale), tout le monde dans la maison peut l'utiliser sans problème. Dans un programme, une variable globale peut être utilisée n'importe où dans le code.

  2. Variable locale : Mais si tu choisis de garder quelque chose dans ta chambre (variable locale), seulement toi (ou la fonction où tu l'as mise) peut l'utiliser. En dehors de ta chambre, personne ne sait que ça existe. Dans un programme, une variable locale ne peut être utilisée que dans la fonction ou le bloc où elle a été déclarée.

  3. Scope : Allons un peu plus loin, si tu as un coffre dans ta chambre et que tu y mets certaines choses, ces choses sont encore plus privées. Elles sont accessibles dans ta chambre (dans le bloc de code) mais uniquement quand le coffre est ouvert (quand le bloc de code s'exécute).

Pourquoi c'est important ?

Comprendre la portée des variables, c'est comme organiser intelligemment ta maison. Si tout est global, ta maison serait en désordre (et ton programme difficile à gérer). Si tout est bien organisé en zones locales, tu sais où tout se trouve, et ta maison (ton programme) est bien rangée et efficace.

Exemple simple :

x = 5 # Variable globale

def ma_fonction():
    y = 10 # Variable locale à ma_fonction
    print(x) # Ça marche, x est globale
    print(y) # Ça marche, y est dans la même "pièce" (fonction)

# print(y) ça ne marcherait pas ici, y n'est pas connue en dehors de ma_fonction

ma_fonction()

Notions à explorer pour aller plus loin :

  • Durée de vie d'une variable : Comprendre combien de temps une variable reste en mémoire.
  • Portée lexicale vs. Portée dynamique : Certaines langues ont des règles différentes sur comment les variables sont résolues.
  • closure (JavaScript) : Fonctions qui se souviennent des variables de l'espace où elles ont été créées, même après que cet espace n'existe plus.
  • Variables d'instance et de classe : Dans la programmation orientée objet, comprendre comment les variables sont liées aux objets ou aux classes.
  • Namespace : Un système pour s'assurer que tous les noms dans un programme sont uniques et ne créent pas de conflit.