CodeGym /Cours /Python SELF FR /Créer son propre package

Créer son propre package

Python SELF FR
Niveau 19 , Leçon 1
Disponible

2.1 Introduction aux packages

Les packages sont un moyen de structurer les modules dans des répertoires. Un package est un répertoire contenant un fichier __init__.py et un ou plusieurs modules. Le fichier __init__.py peut être vide ou contenir du code d'initialisation du package.

Exemple de structure de package/répertoire


mypackage/
    __init__.py
    module1.py
    module2.py
Contenu du fichier __init__.py

# __init__.py
from .module1 import func1
from .module2 import func2
Contenu du fichier module1.py

# module1.py
def func1():
    return "Function 1"
Contenu du fichier module2.py

# module2.py
def func2():
    return "Function 2"

Exemple de code utilisant les fonctions de ce package :


import mypackage

print(mypackage.func1())  # Affichage: Function 1
print(mypackage.func2())  # Affichage: Function 2

On va essayer de créer notre propre package ci-dessous et comprendre comment fonctionnent les autres.

2.2 Créons notre propre package étape par étape

Étape 1 : Création de la structure du package

La première étape consiste à créer la structure des dossiers et fichiers pour votre package. À titre d'exemple, on va créer un package appelé mypackage, contenant deux modules : module1.py et module2.py.

Exemple de structure de package :


mypackage/
    __init__.py
    module1.py
    module2.py

Description des fichiers :

  • __init__.py : Ce fichier peut être vide ou contenir du code d'initialisation du package. Il est nécessaire pour que Python considère le répertoire comme un package.
  • module1.py et module2.py : Ces fichiers contiennent les fonctions, classes et variables que vous souhaitez inclure dans votre package.

Étape 2 : Écriture du code pour les modules

Écrivons un code simple pour nos modules.

module1.py


def func1():
    return "Function 1 from module1"

module2.py


def func2():
    return "Function 2 from module2"

__init__.py

Pour importer les fonctions de nos modules au niveau du package, on les ajoute dans __init__.py.


from .module1 import func1
from .module2 import func2

Maintenant, lorsque vous importez le package, les fonctions func1 et func2 seront disponibles directement.

Étape 3 : Tester le package

Créez un fichier test.py dans le même répertoire que le répertoire mypackage, et utilisez le package dans ce fichier pour le tester.

test.py


import mypackage

print(mypackage.func1())  # Affichage: Function 1 from module1
print(mypackage.func2())  # Affichage: Function 2 from module2

Lancez test.py pour vous assurer que votre package fonctionne correctement.

2.3 Utilisation de la fonction dir()

Quand vous importez un module ou un package, vous pouvez utiliser la fonction dir() pour obtenir la liste de tous les attributs et méthodes disponibles dans ce module. C'est particulièrement utile si vous travaillez avec un module nouveau ou inconnu et que vous voulez rapidement savoir quelles fonctions et classes il propose.

Exemple : Exploration du module standard math

Voici un exemple d'utilisation de dir() pour explorer le module standard math.


import math

print(dir(math))

Ce code importe le module math et affiche la liste de tous les attributs et méthodes disponibles. Le résultat ressemblera à ceci :


['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan',
'atan2', 'atanh', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'expm1', 
'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf',
'isnan', 'isqrt', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'perm', 'pi', 'pow', 'prod',
'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']

Cette liste inclut toutes les fonctions et constantes, définies dans le module math, telles que sin, cos, tan, pi et d'autres.

Utilisation de dir() pour les modules personnalisés

Vous pouvez également utiliser dir() pour des modules personnalisés (les vôtres). Supposons que vous avez un fichier mymodule.py avec le contenu suivant :


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

Vous pouvez importer ce module et utiliser dir() pour explorer son contenu :


import mymodule

print(dir(mymodule))

Le résultat sera le suivant :


['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 
'greet', 'pi']

La liste inclut 8 attributs spéciaux (entourés de traits de soulignement) du module mymodule, et à la fin, vous avez votre méthode greet et la variable pi.

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