Tout d'abord, il doit être clair que le mot-clé nonlocal est défini à l'intérieur de 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 le mot-clé nonlocal à la fermeture pour déclarer :
x = 0 def outer(): x = 1 def inner(): nonlocal x x = 2 print("inner:", x) inner() print("outer:", x) outer() print("global:", x)
Résultat
# inner: 2 # outer: 2 # global: 0
globalToujours pareil, regardons un exemple :Vous voyez la différence ? Il s'agit d'une fonction avec une fonction imbriquée à l'intérieur. Lorsque nonlocal est utilisé, il est déclaré que la variable n'est pas seulement valide dans la fonction imbriquée inner(), mais est valide dans l'ensemble de la grande fonction.
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
global est pour l'ensemble de l'environnement Agit sur les variables ci-dessous, pas sur les variables de la classe de fonction.
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!