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 |
---|
|
Contenu du fichier module1.py |
---|
|
Contenu du fichier module2.py |
---|
|
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
etmodule2.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
.
GO TO FULL VERSION