Cet articleLa déclaration et l'analyse des mots-clés nonlocal et global en Python sont des informations connexes. L'article le présente de manière très détaillée. Je pense qu'il a une certaine valeur de référence pour tous les amis qui en ont besoin. venez nous rejoindre.
1. Déclarations globales et non locales en Python
Le code suivant
a = 10 def foo(): a = 100
Le résultat a de l'exécution de foo() est toujours 10
Affectation à variable dans la fonction, la variable est toujours liée Ciblé à l'espace de noms local de la fonction, ce comportement peut être modifié à l'aide de l'instruction globale.
>>> a 10 >>> def foo(): ... global a ... a = 100 ... >>> a 10 >>> foo() >>> a 100
Lors de l'analyse du nom, vérifiez d'abord la portée locale, puis vérifiez la portée définie par la fonction imbriquée externe couche par couche de l'intérieur vers l'extérieur , comme trouver L'espace de commande global et l'espace de noms intégré ne sont pas recherchés.
Bien que vous puissiez rechercher des variables couche par couche, mais ! ..python2 ne prend en charge que la portée la plus interne (variables locales) et l'espace de commande global (gloabl), ce qui signifie les fonctions internes, les variables locales définies dans les fonctions externes ne peuvent pas être réaffectées. Par exemple, le code suivant ne fonctionne pas
def countdown(start): n = start def decrement(): n -= 1
En python2, la solution peut être : Mettre la valeur modifiée dans. une liste ou un dictionnaire En python3, vous pouvez utiliser l'instruction nonlocale pour terminer la modification
def countdown(start): n = start def decrement(): nonlocal n n -= 1
2. Analyse non locale de Python. avec le mot-clé global
nonlocal
Tout d'abord, il doit être clair que le mot-clé nonlocal est défini dans la fermeture. Veuillez regarder le code suivant :
x = 0 def outer(): x = 1 def inner(): x = 2 print("inner:", x) inner() print("outer:", x) outer() print("global:", x)
Résultat
# inner: 2 # outer: 1 # global: 0
Maintenant, ajoutez nonlocal au fermeture Déclaration par mot clé :
x = 0 def outer(): x = 1 def inner(): nonlocal x x = 2 print("inner:", x) inner() print("outer:", x) outer() print("global:", x)
Résultats
# inner: 2 # outer: 2 # global: 0
Voir Y a-t-il une différence ? Il s'agit d'une fonction imbriquée dans une fonction. Lors de l'utilisation de nonlocal, il est déclaré que la variable n'est pas seulement valide dans la fonction imbriquée inner(), mais qu'elle est valide dans l'ensemble de la grande fonction.
mondial
x = 0 def outer(): x = 1 def inner(): global x x = 2 print("inner:", x) inner() print("outer:", x) outer() print("global:", x)
# inner: 2 # outer: 1 # global: 2
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!