Maison  >  Article  >  développement back-end  >  Analyse détaillée des variables non locales et globales

Analyse détaillée des variables non locales et globales

Y2J
Y2Joriginal
2017-05-09 15:02:002607parcourir

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

dans la fonction 10

La variable est toujours liée à la locale. 🎜> espace de noms, 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 d'un 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. S'il ne trouve pas

, 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

Interne les fonctions

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 modification
def 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

nonlocal

Tout d'abord, il doit être clair que le mot-clé nonlocal est défini dans la fermeture. Veuillez regarder le code suivant :

Résultat
x = 0
def outer():
 x = 1
 def inner():
  x = 2
  print("inner:", x)

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

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

Maintenant, ajoutez le mot-clé nonlocal à la fermeture pour déclarer :
# 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)
Résultat

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

Résumé

[Recommandations associées]

1

Tutoriel 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!

Déclaration:
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