La puissance du « non local » dans Python 3
En programmation Python, les variables peuvent être classées en fonction de leur portée :
Cependant, vous devez parfois combler le fossé entre ces étendues. C'est là que le mot-clé "nonlocal" entre en jeu.
Comprendre "nonlocal"
"nonlocal" est utilisé dans Python 3 pour déclarer une variable qui existe dans un portée plus large mais n’est pas déclarée comme globale. Il vous permet d'accéder et de modifier les variables des fonctions incluses sans affecter les variables globales du même nom.
Impact de "nonlocal"
Pour illustrer la différence, considérons l'exemple suivant sans "nonlocal":
x = 0 def outer(): x = 1 def inner(): x = 2 print("inner:", x) inner() print("outer:", x) outer() print("global:", x)
Sortie :
inner: 2 outer: 1 global: 0
Dans ce cas, la variable x dans la fonction inner() est considérée comme une nouvelle variable locale, indépendante du x dans la fonction external() et du x global.
Maintenant, modifions le code en utilisant "nonlocal":
x = 0 def outer(): x = 1 def inner(): nonlocal x x = 2 print("inner:", x) inner() print("outer:", x) outer() print("global:", x)
Sortie :
inner: 2 outer: 2 global: 0
Dans ce scénario, le mot-clé "nonlocal" permet à la variable x dans la fonction inner() de référencer et de modifier la variable x dans la fonction external(). Les modifications apportées au sein de la fonction inner() persistent dans la fonction external().
Différence avec "global"
"nonlocal" diffère du mot-clé "global" en ce sens qu'il permet l'accès et la modification des variables à partir des portées fermées, tandis que "global" accède et modifie les variables à partir de la portée véritablement globale.
Utiliser "global" dans l'exemple ci-dessus donnerait le résultat suivant :
inner: 2 outer: 1 global: 2
Dans ce cas, la variable x dans la fonction inner() serait liée au x global et tout changement affecterait la valeur du global variable, plutôt que celle de la fonction external().
Conclusion
"nonlocal" fournit un mécanisme puissant pour accéder et modifier les variables de portées fermées dans Python 3. Il vous permet d'éviter les pièges liés à la modification de variables globales dans des fonctions imbriquées et de maintenir une structure de code plus organisée et modulaire.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!