Notion de bloc- portée d'une variable (4/4)

Définitionimport

L'instruction import effectue deux opérations ; elle cherche le module dont le nom a été donné puis elle lie le résultat de cette recherche à un nom dans la portée locale.

ExemplePortée d'une variable dans un import

L'import est un fichier avec l'extension py. Le fichier « mesfonctions.py » contient les instructions suivantes :

1
print("bonjour")
2
def f1(x):
3
    return x + y

Le programme principal contient les instructions suivantes :

1
import mesfonctions as mf
2
3
y = 4
4
print("Appel de la fonction f1")
5
print("f1(2) = ", f1(2))

Pour lancer le programme, il faut lancer la console, placer les deux fichiers dans le même dossier et lancer le programme à partir de ce dossier :

Dans le script précédent, il y a trois blocs de code, le bloc de l'import, le bloc de la fonction f1 (contenu dans le bloc de l'import) et le bloc du programme principale.

la variable y utilisée dans la fonction f1 n'est pas défini dans le bloc lié à l'import. L’interpréteur python exécute les instructions dans l'import, une seule le print bonjour, et ensuite exécute le programme principale.

Il y a une erreur NameError: name 'f1' is not defined

Il faut ajouter le nom mf devant la fonction et le nom de la variable y.

Finalement, la règle utilisée par python est l'ajout d'un préfixe à la variable si elle apparaît à gauche du signe = ou dans les paramètres de la fonction:

1
import mesfonctions as mf
2
3
mf.y = 4
4
print("Appel de la fonction f1")
5
print("f1(2) = ", mf.f1(2))

Conseil

Utilisez au maximum les variables locales dans les modules, les fonctions ou les classes.

L'usage des variables globales doit être réservé aux constantes mathématiques (\(\pi\) , e) à des éléments matériels comme le nombre d'écran, ou bien à des éléments de l'environnement multi tache ou multi-fenêtre.