Introduction à l'utilisation et aux différences de nonlocal et global dans Python3 (avec exemples)

不言
Libérer: 2019-03-07 17:23:09
avant
4057 Les gens l'ont consulté

Cet article vous apporte une introduction à l'utilisation et à la différence entre non local et global dans Python3 (avec des exemples). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Mot clé nonlocal

Dans Python 2.x, les fermetures ne peuvent lire que les variables de la fonction externe, mais pas l'écraser. Afin de résoudre ce problème, Python 3.x a introduit le mot-clé nonlocal. Déclarer des variables avec nonlocal dans la fermeture permet à l'interpréteur de trouver le nom de la variable dans la fonction externe.

Remarque : Le mot-clé nonlocal : apparaît dans la portée globale et la portée locale. La portée globale fait référence à la portée du module où se trouve le code actuel, et la portée locale fait référence à la portée de la fonction ou de la méthode actuelle. Le code dans la portée locale peut lire les variables dans la portée externe (y compris la portée globale), mais ne peut pas les modifier. Si vous souhaitez le modifier, vous devez utiliser le mot-clé global ici

Exemple

La fonction du mot-clé nonlocal est similaire au mot-clé global Vous pouvez utiliser le mot-clé nonlocal pour le modifier. dans une fonction imbriquée Variables dans des étendues imbriquées.

Regardez deux exemples

Exemple 1



Résultat :

name = 'pythontab'
def func()
global name
name = 'pythontab.com'
func()
print(name)
Copier après la connexion


Exemple 2

pythontab.com
Copier après la connexion
Copier après la connexion

Résultat :

def func():
name = 'pythontab'
def foo():
    nonlocal name
    name = 'pythontab.com'
foo()
print(name)
func()
Copier après la connexion


Notez que dans l'exemple 2, le mot-clé global n'est pas utilisé pour modifier la valeur de name.

pythontab.com
Copier après la connexion
Copier après la connexion
Résumé

Les principales différences sont les deux points suivants :

Les fonctions des deux sont différentes. Après avoir modifié une variable avec le mot-clé global, il identifie la variable comme variable globale. Après avoir modifié la variable avec le mot-clé nonlocal, il identifie la variable comme variable locale dans la fonction de niveau supérieur. S'il n'y a pas de variable locale dans la fonction de niveau supérieur, si cette variable locale existe, une erreur se produira à l'emplacement non local (la fonction de niveau supérieur qui utilise des variables modifiées non locales signalera certainement une erreur).

    Le champ d'utilisation des deux est différent. Le mot-clé global peut être utilisé n'importe où, y compris la fonction de niveau supérieur et les fonctions imbriquées, même si la variable n'a pas été définie auparavant, elle peut être utilisée directement après une modification globale, tandis que le mot-clé nonlocal ne peut être utilisé que dans les fonctions imbriquées. outside Les variables locales correspondantes sont définies dans la fonction layer, sinon une erreur se produira (voir 1)

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:segmentfault.com
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