Maison >développement back-end >Tutoriel Python >Quand puis-je accéder aux variables globales en Python sans utiliser le mot-clé « global » ?

Quand puis-je accéder aux variables globales en Python sans utiliser le mot-clé « global » ?

DDD
DDDoriginal
2024-12-25 03:32:20124parcourir

When Can I Access Global Variables in Python Without Using the `global` Keyword?

Accès à une variable globale sans le mot-clé 'global' en Python

En Python, l'accès à une variable globale dans une fonction nécessite généralement l'utilisation de le mot-clé « global ». Cependant, il existe des cas où une variable globale est accessible sans la déclarer explicitement comme telle.

Le problème :

Pourquoi est-il possible d'accéder à une variable globale même sans utiliser le mot-clé 'global', comme le démontre l'extrait de code suivant :

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

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

print(getJoin())  # Output: '0.0.0.0'

Le Explication :

Le mot-clé 'global' est principalement utilisé pour modifier ou créer des variables globales dans un contexte local. Cependant, dans certains cas, une variable globale est accessible sans la déclarer explicitement comme globale pour les raisons suivantes :

  • Ombrage de variable : Si une variable portant le même nom que une variable globale est définie dans une portée locale, la variable locale est prioritaire. C'est ce qu'on appelle l'observation de variables.
  • Règles d'espace de noms : Python a un espace de noms distinct pour chaque fonction. Cependant, lorsqu'une variable est accédée dans une fonction sans être explicitement définie dans cette fonction, l'interpréteur la recherche dans l'espace de noms global. Si la variable est trouvée dans l'espace de noms global, elle est renvoyée.

Exemple :

Considérez le code suivant :

def bob():
    me = "locally defined"  # Defined only in local context
    print(me)

L'appel de la fonction bob() affichera "défini localement" car une variable locale nommée me a été définie dans la fonction. Cependant, si nous essayons d'accéder à moi en dehors de la fonction sans le mot-clé 'global', cela entraînera une 'UnboundLocalError'.

print(me)  # Asking for a global variable

Conclusion :

Bien que le mot-clé 'global' soit généralement recommandé pour modifier ou créer des variables globales, il est parfois possible d'accéder à des variables globales sans les déclarer explicitement comme telles. Ce comportement est dû à l'observation des variables et au mécanisme de recherche dans les espaces de noms de Python. Cependant, il est important de noter que s'appuyer sur un accès implicite aux variables globales peut entraîner des erreurs et de la confusion. Il est donc recommandé d'utiliser explicitement le mot-clé « global » lorsque cela est nécessaire.

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