CodeGym /Cours /Python SELF FR /Importation de modules

Importation de modules

Python SELF FR
Niveau 19 , Leçon 0
Disponible

1.1 Introduction aux modules

Un module en Python est un fichier avec l'extension .py contenant du code. Les modules permettent de décomposer un grand code en parties plus petites et gérables. Chaque module peut contenir des fonctions, des classes et des variables, et peut également exécuter du code lors de son importation.

Exemple de module simple

Créons un module mymodule.py:


# mymodule.py

def greet(name):
    return f"Hello, {name}!"
            
pi = 3.14159
        

Maintenant, ce module peut être importé et utilisé dans un autre fichier.

1.2 Importation de modules

Python offre plusieurs façons d'importer des modules. Voyons-les une à une.

Importation de tout le module

La syntaxe générale de cette opération est :


import module

Cette méthode importe tout le module, et vous pouvez utiliser ses fonctions et variables en spécifiant le nom du module.


import module

print(module.greet("Alice"))  # Sortie : Hello, Alice!
print(module.pi)  # Sortie : 3.14159
        

On a déjà fait quelque chose de similaire avec le module math, tu te souviens ?


import math

print(math.ceil(13 / 7))  # arrondir vers le haut
print(math.floor(13 / 7))  # arrondir vers le bas
        

Importation de certains éléments du module

Vous pouvez importer non pas tout ce qui se trouve dans le module, mais seulement certains de ses éléments. La syntaxe générale de cette opération est :


from module import func, var

Cette méthode importe uniquement certaines fonctions, classes ou variables du module, ce qui permet de les utiliser sans indiquer le nom du module.


from mymodule import greet, pi

print(greet("Bob"))  # Sortie : Hello, Bob!
print(pi)  # Sortie : 3.14159
        

Importer un module avec un alias

La syntaxe générale de cette opération est :


import module as alias

Cette méthode permet d'importer un module et de lui attribuer un autre nom, ce qui peut être utile pour raccourcir les noms de modules trop longs ou pour résoudre les conflits de noms.


import mymodule as mm

print(mm.greet("Charlie"))  # Sortie : Hello, Charlie!
print(mm.pi)  # Sortie : 3.14159
        

Importer tous les éléments du module

La syntaxe générale de cette opération est :


from module import *

Cette méthode importe toutes les fonctions, classes et variables du module, ce qui permet de les utiliser sans indiquer le nom du module. Cependant, l'utilisation de cette méthode n'est pas recommandée, car elle peut causer des conflits de noms et rendre le code difficile à lire.


from mymodule import *

print(greet("Dave"))  # Sortie : Hello, Dave!
print(pi)  # Sortie : 3.14159
        

1.3 Sous le capot du processus d'importation

Ordre de recherche des modules

Quand tu importes un module, Python le recherche dans un ordre précis :

  1. Répertoire courant : Python cherche d'abord le module dans le répertoire courant d'où le script a été lancé.
  2. Variable d'environnement PYTHONPATH : Si le module n'est pas trouvé dans le répertoire courant, Python le cherche dans les répertoires indiqués dans la variable d'environnement PYTHONPATH.
  3. Répertoires standards : Si le module n'est toujours pas trouvé, Python le cherche dans les répertoires standards, comme les répertoires indiqués dans sys.path.

Exemple :


import sys

for path in sys.path:
    print(path)
        

Importation locale et globale

Les modules peuvent être importés au niveau global (au début du fichier) ou au niveau local (dans une fonction ou une méthode).

Importation globale

L'importation globale se fait au début du fichier et rend le module importé accessible dans tout le fichier.


import math

def calculate_circle_area(radius):
    return math.pi * radius ** 2
        

Importation locale

L'importation locale se fait à l'intérieur d'une fonction ou d'une méthode et rend le module importé accessible uniquement dans cette fonction ou méthode.


def calculate_square_root(x):
    import math
    return math.sqrt(x)
    
print(calculate_square_root(16))
        

L'importation locale peut être utile pour réduire le temps de chargement du module ou pour éviter des conflits de noms.

1.4 Importation dynamique

L'importation dynamique permet d'importer des modules pendant l'exécution du programme. Cela peut être utile lorsque vous devez importer des modules en fonction de l'entrée utilisateur ou d'autres conditions dynamiques.

La syntaxe générale de cette opération est :


module = __import__("module")

Essayons d'importer le module math de cette façon, juste pour l'exemple.


module_name = "math"
module = __import__(module_name)
print(module.sqrt(16))  # Sortie : 4.0

Travailler avec le code suivant est similaire à l'utilisation de import as, où le module math est attribué à l'alias module.

1.5 Accéder aux attributs d'un module avec la fonction getattr

La fonction getattr permet d'accéder dynamiquement aux attributs d'un module (ou de tout objet). Elle peut être utile lorsque les noms d'attributs ne sont pas connus à l'avance ou peuvent changer pendant l'exécution du programme.

Syntaxe de la fonction getattr :


getattr(object, name, default = None)

object est l'objet dont il faut obtenir l'attribut, name est une chaîne contenant le nom de l'attribut, et default est la valeur renvoyée si l'attribut avec le nom donné n'existe pas. La valeur par défaut pour le paramètre default est None.

Exemple d'utilisation de la fonction getattr :


import math

# Obtenir l'attribut sqrt du module math
sqrt_function = getattr(math, 'sqrt')

print(sqrt_function(25))  # Sortie : 5.0

# Essayer d'obtenir un attribut inexistant, retourner la valeur par défaut
non_existent_attr = getattr(math, 'non_existent', 'default_value')

print(non_existent_attr)  # Sortie : default_value
        

Dans cet exemple, nous utilisons la fonction getattr pour obtenir la fonction sqrt du module math, puis nous appelons cette fonction pour calculer la racine carrée du nombre 25. Si l'attribut avec le nom donné n'existe pas, la valeur par défaut default_value est renvoyée.

Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION