Maison > développement back-end > Tutoriel Python > Comment une fonction Python peut-elle accéder à une variable globale sans le mot-clé « global » ?

Comment une fonction Python peut-elle accéder à une variable globale sans le mot-clé « global » ?

Patricia Arquette
Libérer: 2024-12-16 08:53:13
original
520 Les gens l'ont consulté

How Can a Python Function Access a Global Variable Without the `global` Keyword?

Accéder aux variables globales sans mot-clé global

En Python, les variables globales sont stockées dans un espace de noms distinct des variables locales. Pour accéder à une variable globale dans une fonction, le mot-clé global est généralement utilisé. Cependant, il existe des situations où une variable globale est accessible sans la déclarer explicitement comme telle.

Considérez le code suivant :

sub = ['0', '0', '0', '0']

def getJoin():
    return '.'.join(sub)

getJoin()
Copier après la connexion

Dans ce code, la fonction getJoin renvoie les éléments joints de la sous-liste, qui est une variable globale. Étonnamment, la fonction est capable d'accéder à sub sans utiliser le mot-clé global.

Pourquoi cela se produit-il ?

Portée dynamique

Python utilise la portée dynamique , ce qui signifie que les variables sont recherchées dans la portée actuelle, puis dans les portées englobantes jusqu'à ce qu'elles soient trouvées. Dans la fonction getJoin, la variable sub n'est pas trouvée localement. Par conséquent, il recherche la portée englobante, qui est la portée globale, et y trouve la sous-variable.

Liaison de variable

Lorsque l'on accède à une variable, elle est liée vers un emplacement mémoire. Dans le cas de sub, il est lié à l'emplacement mémoire contenant la liste des « 0 ». Ce processus de liaison se produit lorsque l'interprète rencontre l'instruction d'affectation sub = ['0', '0', '0', '0'].

Accès à la fonction

Lorsque la fonction getJoin est appelée, elle s'exécute et l'interpréteur recherche les variables dont il a besoin. Puisque sub n'est pas trouvé localement, il recherche dans la portée englobante et trouve la sous-variable déjà liée. La fonction accède ensuite aux données stockées à cet emplacement mémoire, qui contient la liste des '0'.

Mot-clé global

Le mot-clé global est utile lorsque l'on souhaite modifier ou créez des variables globales dans un contexte local. Cependant, il n'est pas strictement nécessaire d'accéder aux variables globales si elles sont déjà liées à un emplacement mémoire dans la portée englobante.

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!

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal