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

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

Y2J
Libérer: 2017-05-09 15:02:00
original
2687 Les gens l'ont consulté

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

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

def countdown(start): 
 n = start 
 def decrement(): 
  nonlocal n 
  n -= 1
Copier après la connexion

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

Maintenant, ajoutez le mot-clé nonlocal à la fermeture pour déclarer :
# inner: 2
# outer: 1
# global: 0
Copier après la connexion

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



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)
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.

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

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!

É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