Maison > développement back-end > Tutoriel Python > Introduction à la déclaration et à l'analyse des mots-clés non locaux et globaux en Python

Introduction à la déclaration et à l'analyse des mots-clés non locaux et globaux en Python

高洛峰
Libérer: 2017-03-13 09:29:11
original
1716 Les gens l'ont consulté

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
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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)
Copier après la connexion

Résultat


# inner: 2
# outer: 1
# global: 0
Copier après la connexion

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)
Copier après la connexion

Résultats


# inner: 2
# outer: 2
# global: 0
Copier après la connexion

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

Toujours pareil, regardez un exemple :


x = 0
def outer():
 x = 1
 def inner():
  global x
  x = 2
  print("inner:", x)

 inner()
 print("outer:", x)

outer()
print("global:", x)
Copier après la connexion
En conséquence,


# inner: 2
# outer: 1
# global: 2
Copier après la connexion
global fonctionne sur les variables dans l'ensemble de l'environnement, pas sur les variables dans les classes de fonctions.

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal