Cet article vous apporte une introduction à l'utilisation et à la différence entre non local et global dans Python3 (avec des exemples). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
Mot clé nonlocal
Dans Python 2.x, les fermetures ne peuvent lire que les variables de la fonction externe, mais pas l'écraser. Afin de résoudre ce problème, Python 3.x a introduit le mot-clé nonlocal. Déclarer des variables avec nonlocal dans la fermeture permet à l'interpréteur de trouver le nom de la variable dans la fonction externe.
Remarque : Le mot-clé nonlocal : apparaît dans la portée globale et la portée locale. La portée globale fait référence à la portée du module où se trouve le code actuel, et la portée locale fait référence à la portée de la fonction ou de la méthode actuelle. Le code dans la portée locale peut lire les variables dans la portée externe (y compris la portée globale), mais ne peut pas les modifier. Si vous souhaitez le modifier, vous devez utiliser le mot-clé global ici
Regardez deux exemples
Exemple 1
Résultat :
name = 'pythontab' def func() global name name = 'pythontab.com' func() print(name)
Exemple 2
pythontab.com
Résultat :
def func(): name = 'pythontab' def foo(): nonlocal name name = 'pythontab.com' foo() print(name) func()
Notez que dans l'exemple 2, le mot-clé global n'est pas utilisé pour modifier la valeur de name.
pythontab.com
Les fonctions des deux sont différentes. Après avoir modifié une variable avec le mot-clé global, il identifie la variable comme variable globale. Après avoir modifié la variable avec le mot-clé nonlocal, il identifie la variable comme variable locale dans la fonction de niveau supérieur. S'il n'y a pas de variable locale dans la fonction de niveau supérieur, si cette variable locale existe, une erreur se produira à l'emplacement non local (la fonction de niveau supérieur qui utilise des variables modifiées non locales signalera certainement une erreur).
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!