Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Portée des variables locales, globales et non locales | Portée des variables, fonctions imbriquées et closures
Concepts de Programmation Fonctionnelle en Python

bookPortée des variables locales, globales et non locales

Glissez pour afficher le menu

Comprendre comment Python détermine la portée des variables est essentiel pour écrire un code clair et sans erreur. Python utilise un ensemble spécifique de règles, connu sous le nom de règle LEGB, pour décider où chercher la valeur d'une variable. LEGB signifie Local, Enclosing, Global, et Built-in. Lorsque vous faites référence à une variable, Python recherche sa valeur dans cet ordre :

  • Local : variables définies dans la fonction ou la méthode actuelle ;
  • Enclosing : variables dans la portée de la fonction englobante la plus proche (en cas de fonctions imbriquées) ;
  • Global : variables définies au niveau supérieur du module ou déclarées globales à l'aide du mot-clé global ;
  • Built-in : noms prédéfinis dans Python, tels que len ou range.

Cette règle permet à Python de résoudre efficacement les noms de variables et vous aide à prévoir d'où proviendra la valeur d'une variable. Parfois, il peut être nécessaire de modifier des variables en dehors de la portée de la fonction actuelle. Python fournit deux mots-clés pour cela : global et nonlocal. Le mot-clé global permet d'attribuer une valeur à une variable au niveau du module, tandis que nonlocal permet de modifier une variable dans la portée de la fonction englobante la plus proche qui n'est pas globale.

123456789101112131415161718
# Global scope global_var = "I am global" def outer(): # Enclosing scope enclosing_var = "I am enclosing" def inner(): # Local scope local_var = "I am local" print("Local:", local_var) print("Enclosing:", enclosing_var) # Found in enclosing scope print("Global:", global_var) # Found in global scope print("Built-in:", len([1, 2, 3])) # 'len' comes from built-in scope inner() outer()
copy
  • La variable global_var est définie dans la portée globale et est accessible depuis n'importe où dans le module ;
  • À l'intérieur de la fonction outer, enclosing_var crée une variable d'environnement englobant qui peut être accédée par les fonctions imbriquées ;
  • La fonction imbriquée inner définit local_var, qui n'existe que dans cette fonction et démontre l'accès aux variables de toutes les portées englobantes ;
  • La fonction len est utilisée pour montrer comment Python peut accéder aux noms de la portée intégrée.

Cela montre comment Python trouve les valeurs des variables en recherchant successivement dans les portées locale, englobante, globale et intégrée, ce qui rend la résolution des variables prévisible et organisée.

1. Que fait le mot-clé nonlocal en Python ?

2. Qu'est-ce que la règle LEGB ?

question mark

Que fait le mot-clé nonlocal en Python ?

Sélectionnez la réponse correcte

question mark

Qu'est-ce que la règle LEGB ?

Sélectionnez la réponse correcte

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 3. Chapitre 1

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

Section 3. Chapitre 1
some-alt