Espaces de noms et portée en Python

Un espace de noms est un système qui a un nom unique pour chaque objet en Python. Un objet peut être une variable ou une méthode. Python lui-même maintient un espace de noms sous la forme d’un dictionnaire Python.

Prenons un exemple, une structure de système de répertoires-fichiers dans les ordinateurs. Inutile de dire que l’on peut avoir plusieurs répertoires ayant un fichier avec le même nom dans chaque répertoire. Mais on peut être dirigé vers le fichier, on le souhaite, simplement en spécifiant le chemin absolu vers le fichier.

Exemple en temps réel, le rôle d’un espace de nom est comme un nom de famille. On peut ne pas trouver une seule « Alice » dans la classe, il peut y avoir plusieurs « Alice » mais lorsque vous demandez en particulier « Alice Lee » ou « Alice Clark » (avec un nom de famille), il n’y en aura qu’une (le temps t pensez que le prénom et le nom sont les mêmes pour plusieurs étudiants).

Sur des lignes similaires, l’interpréteur Python comprend vers quelle méthode ou variable exacte on essaie de pointer dans le code, en fonction de l’espace de noms. Ainsi, la division du mot lui-même donne un peu plus d’informations. Son Nom (qui signifie nom, un identifiant unique) + Espace (qui parle de quelque chose lié à la portée). Ici, un nom peut être celui de n’importe quelle méthode ou variable Python et l’espace dépend de l’emplacement à partir duquel tente d’accéder à une variable ou à une méthode.

Types d’espaces de noms :

Lorsque l’interpréteur Python s’exécute uniquement sans modules, méthodes, classes, etc. définis par l’utilisateur. Certaines fonctions telles que print(), id() sont toujours présentes, ce sont des espaces de noms intégrés. Lorsqu’un utilisateur crée un module, un espace de noms global est créé, plus tard la création de fonctions locales crée l’espace de noms local. L’espace de noms intégré englobe l’espace de noms global et l’espace de noms global englobe l’espace de noms local.

La durée de vie d’un espace de nom :

La durée de vie d’un espace de noms dépend de la portée des objets, si la portée d’un objet se termine, la durée de vie de cet espace de noms prend fin. Par conséquent, il n’est pas possible d’accéder aux objets de l’espace de noms interne à partir d’un espace de noms externe.

Exemple

variable1 = 5
def une_fonction():
 
    # var2 est dans l'espace de noms local
    variable2 = 6
    def une_deuxieme_fonction():
 
        # variable3 est dans le local imbriqué
        # namespace
        variable3 = 7

Comme le montre la figure suivante, le même nom d’objet peut être présent dans plusieurs espaces de noms car l’isolement entre le même nom est maintenu par leur espace de noms.

Mais dans certains cas, on peut être intéressé par la mise à jour ou le traitement des variables globales uniquement, comme le montre l’exemple suivant, il faut le marquer explicitement comme global et la mise à jour ou le processus. Notez que la ligne « count = count 1 » fait référence à la variable globale et utilise donc la variable globale, mais comparez-la à la même ligne écrite « count = 1 ». Ensuite, la ligne « compte global » est absolument nécessaire selon les règles de portée.

total = 5
def une_fonction():
    global total
    total= total + 1
    print(total)
une_fonction()

Résultat

6

Portée des objets en Python

La portée fait référence à la région de codage à partir de laquelle un objet Python particulier est accessible. Par conséquent, on ne peut pas accéder à un objet particulier de n’importe où à partir du code, l’accès doit être autorisé par la portée de l’objet.