Introduction à Scope en Python

La portée définit l'accessibilité de l'objet python. Pour accéder à la variable particulière dans le code, la portée doit être définie car elle n'est pas accessible depuis n'importe où dans le programme. La région de codage particulière où les variables sont visibles est connue sous le nom de portée. Les variables ne sont pas visibles par tout le code, sa visibilité peut être limitée. La portée vérifie quelle variable peut être «vue». Scope définit l'ensemble de règles qui nous indiquent comment et où une variable peut être recherchée. La variable est recherchée soit pour récupérer une valeur, soit pour attribuer une valeur. L'espace de noms est l'identification unique de la variable ou de la méthode. L'espace de noms indique à l'interpréteur python le nom de l'objet et l'emplacement à partir duquel il essaie d'y accéder.

Les espaces de noms sont recherchés pour la résolution de la portée selon la règle LEGB. Le LEGB signifie: L: local, E: fermé, G: global, B: intégré. La séquence de LEGB est importante. La variable est d'abord recherchée dans Local, suivie de Enclosed, puis globale et enfin intégrée.

Types de portée en Python

Étudions comment déclarer une variable et comment accéder à sa portée:

1. Portée locale

Les variables définies dans la fonction sont une portée locale de la variable. Ces variables sont définies dans le corps de la fonction. Comprenons ce concept à l'aide d'un exemple. Dans cet exemple 1, nous avons pris une variable num. Num = 0 est défini en dehors de la fonction, il ne s'agit donc pas d'une variable locale. Selon notre définition, les variables déclarées à l'intérieur du corps de la fonction sont des variables locales. Ici num = 1 est une variable locale qui est déclarée et imprimée dans la démo de la fonction. Si nous exécutons ce code, la sortie est donnée ci-dessous.

Exemple 1:

Code:

num=0
def demo():
#print(num)
num=1
print("The Number is:", num)
demo()

Production:

Num est local à la fonction. Lorsque nous utilisons la valeur de variable num dans la fonction avant de la déclarer localement, cela génère une erreur.

Reportez-vous à l'exemple 2: ici, la première instruction print soulève une erreur python lorsque nous essayons d'y accéder avant l'affectation.

Exemple # 2:

Code:

num=0
def demo():
print(num) //Raises an Error
num=1
print("The Number is:", num)
demo()

Production:

2. Portée mondiale

La variable qui peut être lue de n'importe où dans le programme est connue comme une portée globale. Ces variables sont accessibles à l'intérieur et à l'extérieur de la fonction. Lorsque nous voulons utiliser la même variable dans le reste du programme, nous la déclarons globale.

Dans l'exemple 1 suivant, nous avons déclaré une variable Str qui est en dehors de la fonction. La démonstration de la fonction est appelée et affiche la valeur de la variable Str. Pour utiliser une variable globale à l'intérieur d'une fonction, il n'est pas nécessaire d'utiliser le mot clé global.

Exemple 1:

Code:

def demo():
print(Str)
# Global
Str = "You are clever"
demo()

Production:

Dans l'exemple suivant, 2 Nous avons essayé de modifier la valeur de la variable globale Str à l'intérieur de la fonction, c'est pourquoi elle a déclenché une exception. Si nous modifions ou attribuons une nouvelle valeur à la variable à l'intérieur de la fonction, nous devons écrire global. Si vous voulez dire à un interpréteur python que vous souhaitez utiliser une variable globale, le mot-clé «global» est utilisé. Si elle n'a pas été déclarée globale, python traite cette variable comme locale si elle est créée ou modifiée à l'intérieur de la fonction. Dans cette première ligne lève une exception car python suppose que nous voulons l'affectation en tant que variable locale en raison de l'affectation à str à l'intérieur de la fonction demo ().

Exemple # 2:

Code:

def demo():
print(Str)
Str = "You are smart"
print(Str)
# Global scope
Str = "You are Clever"
demo()
print(Str)

Production:

Lorsque nous voulons changer la valeur de la variable globale à l'intérieur de la fonction, le mot-clé global est utilisé.

L'exemple 3 suivant a résolu le problème rencontré ci-dessus.

Exemple # 3:

Code:

def demo():
global Str
print(Str)
Str = "You are smart"
print(Str)
# Global scope
Str = "You are Clever"
demo()
print(Str)

Production:

3. Champ d'application non local ou clos

La variable non locale est la variable définie dans la fonction imbriquée. Cela signifie que la variable ne peut être ni dans la portée locale ni dans la portée globale. Pour créer une variable non locale, un mot clé non local est utilisé. Dans le code suivant, nous avons créé une fonction externe et il y a une fonction imbriquée inner (). Dans le cadre de la fonction external (), la fonction inner () est définie. Si nous modifions la variable non locale telle qu'elle est définie dans la fonction inner (), les changements se reflètent également dans la fonction externe.

Exemple 1:

Code:

def func_outer():
x = "local"
def func_inner():
nonlocal x
x = "nonlocal"
print("inner:", x)
func_inner()
print("outer:", x)
func_outer()

Production:

Si nous voulons simplement utiliser la valeur de la fonction externe et que nous ne voulons apporter aucune modification, commentez la ligne (non locale a).

Exemple # 2:

Code:

def func_outer():
a = "local"
def func_inner():
#nonlocal a
a = "nonlocal"
print("inner:", a)
func_inner()
print("outer:", a)
func_outer()

Production:

4. Portée intégrée

Si une variable n'est pas définie dans la portée locale, fermée ou globale, python la recherche dans la portée intégrée. Dans l'exemple suivant, 1 du module mathématique pi est importé et la valeur de pi n'est pas définie en global, local et fermé. Python recherche ensuite la valeur pi dans la portée intégrée et imprime la valeur. Par conséquent, le nom qui est déjà présent dans la portée intégrée ne doit pas être utilisé comme identifiant.

Exemple 1:

Code:

# Built-in Scope
from math import pi
# pi = 'Not defined in global pi'
def func_outer():
# pi = 'Not defined in outer pi'
def inner():
# pi = 'not defined in inner pi'
print(pi)
inner()
func_outer()

Production:

Conclusion - Portée en Python

Dans cet article, nous avons découvert la portée de la variable python. Nous avons appris quatre types de portée: portée globale, portée locale, portée fermée et portée intégrée. Nous avons également appris quand utiliser des mots clés globaux et non locaux. J'espère que vous avez compris ce concept.

Article recommandé

Ceci est un guide de Scope en Python. Nous discutons ici des types de portée en Python et de ses exemples ainsi que de l'implémentation et de la sortie du code. Vous pouvez également consulter nos autres articles connexes pour en savoir plus -

  1. Tuples en Python avec types
  2. Présentation de l'encapsulation en Python
  3. Alternatives à Python | Top 6
  4. Introduction à l'héritage en Python