Porté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
lenourange.
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()
- La variable
global_varest 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_varcrée une variable d'environnement englobant qui peut être accédée par les fonctions imbriquées ; - La fonction imbriquée
innerdéfinitlocal_var, qui n'existe que dans cette fonction et démontre l'accès aux variables de toutes les portées englobantes ; - La fonction
lenest 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 ?
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion