Cet article vous présente principalement les informations pertinentes sur la déclaration et l'analyse des mots-clés nonlocal et global en Python. L'introduction dans l'article est très détaillée, je pense qu'elle a une certaine valeur de référence pour tous les amis qui en ont besoin. lisez-le ensemble.
1. Déclarations globales et non locales en Python
Le code suivant
a = 10 def foo(): a = 100
est exécuté Le résultat de foo() a est toujours l'affectation à la
variable
La variable est toujours liée à la locale. 🎜> espace de noms< 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
, recherchez le <. 🎜> espace de commande global et espaces de noms intégré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), c'est-à-dire
ne peuvent pas réaffecter les variables locales définies dans les fonctions externes. Par exemple, le code suivant ne fonctionne pas
En python2, la solution peut être de mettre les valeurs modifiées dans une liste Ou dans le dictionnaire, en python3, vous pouvez utiliser l'instruction non locale pour compléter la modificationdef countdown(start): n = start def decrement(): n -= 1
def countdown(start): n = start def decrement(): nonlocal n n -= 1
2. Analyse des mots clés non locaux et globaux Python
nonlocalTout d'abord, il doit être clair que le mot-clé nonlocal est défini dans la fermeture. Veuillez regarder le code suivant :
Résultatx = 0 def outer(): x = 1 def inner(): x = 2 print("inner:", x) inner() print("outer:", x) outer() print("global:", x)
# inner: 2 # outer: 1 # global: 0
x = 0 def outer(): x = 1 def inner(): nonlocal x x = 2 print("inner:", x) inner() print("outer:", x) outer() print("global:", x)
Vous voyez la 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.
# inner: 2 # outer: 2 # global: 0
global
Toujours pareil, regardez un exemple :
Résultat
x = 0 def outer(): x = 1 def inner(): global x x = 2 print("inner:", x) inner() print("outer:", x) outer() print("global:", x)
global fonctionne sur les variables dans l'ensemble de l'environnement, pas sur les variables dans les classes de fonctions.
# inner: 2 # outer: 1 # global: 2
[Recommandations associées]
1Tutoriel vidéo gratuit Python
2. Tutoriel d'introduction de base de Python
3 Tutoriel vidéo sur la rencontre entre Python et la collecte de données
.
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!