Maison >développement back-end >Tutoriel Python >Quelle est la principale différence entre les modules et les packages Python ?
Comprendre la différence entre les modules et les packages en Python
Contrairement à de nombreux autres langages de programmation, Python fait la distinction entre les modules et les packages. Une compréhension claire de leurs distinctions est cruciale pour un codage Python efficace.
Définition d'un module
Un module en Python n'est rien de plus qu'un seul fichier Python. Il s'agit essentiellement d'une collection de code défini dans ce fichier particulier. Par exemple, un fichier nommé « mon_module.py » définirait un module appelé « mon_module ». Les modules aident à organiser le code en unités logiques et permettent de les importer et de les réutiliser dans d'autres scripts Python.
Définition d'un package
Un package, en revanche, représente un collection de modules et sous-packages. Il est représenté par un répertoire contenant plusieurs modules Python. De plus, un fichier nommé « __init__.py » est requis dans le répertoire du package pour le distinguer des répertoires ordinaires hébergeant les scripts Python. Les packages peuvent être imbriqués à différents niveaux, à condition que chaque répertoire inclut son propre fichier "__init__.py".
Distinctions entre modules et packages
Tant qu'un module existe en tant que fichier Python unique, un package constitue un répertoire de modules Python. Cette distinction ne s'applique toutefois qu'au niveau du système de fichiers. Lors de l'importation d'un module ou d'un package, l'objet Python généré est toujours de type "module".
Une différence notable est que l'importation d'un package ne rend que les variables, fonctions et classes définies dans son "__init__. py" fichier directement disponible. Les sous-packages et les modules du package restent inaccessibles via l'importation directe.
Exemple
Considérons le package XML de la bibliothèque standard Python à titre d'illustration. Son répertoire XML contient un fichier "__init__.py" et quatre sous-répertoires. L'un de ces sous-répertoires, etree, contient en outre un fichier "__init__.py" et un fichier appelé ElementTree.py.
L'importation des différents composants entraînerait les résultats suivants :
import xml type(xml) # <type 'module'> xml.etree.ElementTree # AttributeError: 'module' object has no attribute 'etree' import xml.etree type(xml.etree) # <type 'module'> xml.etree.ElementTree # AttributeError: 'module' object has no attribute 'ElementTree' import xml.etree.ElementTree type(xml.etree.ElementTree) # <type 'module'> xml.etree.ElementTree.parse # <function parse at 0x00B135B0>
À partir de ces exemples, vous pouvez voir que ce n'est qu'après avoir explicitement importé le sous-package ou le module (xml.etree.ElementTree) que vous pouvez accéder à son contenu.
Remarque : Python propose également des modules intégrés qui sont implémentés en C (par exemple, sys). Cependant, ceux-ci n’entrent pas dans le cadre de votre enquête.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!