Paquets Python: comment les créer et les importer?

Dans cet article, vous apprendrez à diviser votre base de code en modules propres et efficaces à l'aide de packages Python. En outre, vous apprendrez à importer et à utiliser vos propres packages ou des packages tiers dans votre programme Python.

Vidéo: Packages Python: organisez votre code

Que sont les packages?

Nous ne stockons généralement pas tous nos fichiers sur notre ordinateur au même endroit. Nous utilisons une hiérarchie bien organisée de répertoires pour un accès plus facile.

Des fichiers similaires sont conservés dans le même répertoire, par exemple, nous pouvons conserver toutes les chansons dans le répertoire " musique ". De manière analogue, Python a des packages pour les répertoires et des modules pour les fichiers.

Au fur et à mesure que notre programme d'application s'agrandit avec de nombreux modules, nous plaçons des modules similaires dans un seul package et différents modules dans différents packages. Cela rend un projet (programme) facile à gérer et conceptuellement clair.

De même, comme un répertoire peut contenir des sous-répertoires et des fichiers, un package Python peut avoir des sous-packages et des modules.

Un répertoire doit contenir un fichier nommé __init__.pypour que Python le considère comme un package. Ce fichier peut être laissé vide mais nous plaçons généralement le code d'initialisation de ce package dans ce fichier.

Voici un exemple. Supposons que nous développions un jeu. Une organisation possible des packages et des modules pourrait être comme indiqué dans la figure ci-dessous.

Structure du module de package dans la programmation Python

Importer un module depuis un package

Nous pouvons importer des modules à partir de packages en utilisant l'opérateur point (.).

Par exemple, si nous voulons importer le startmodule dans l'exemple ci-dessus, cela peut être fait comme suit:

 import Game.Level.start

Maintenant, si ce module contient une fonction nommée select_difficulty(), nous devons utiliser le nom complet pour la référencer.

 Game.Level.start.select_difficulty(2)

Si cette construction semble longue, nous pouvons importer le module sans le préfixe de package comme suit:

 from Game.Level import start

Nous pouvons maintenant appeler la fonction simplement comme suit:

 start.select_difficulty(2)

Une autre façon d'importer uniquement la fonction (ou la classe ou la variable) requise à partir d'un module dans un package serait la suivante:

 from Game.Level.start import select_difficulty

Maintenant, nous pouvons appeler directement cette fonction.

 select_difficulty(2)

Bien que plus simple, cette méthode n'est pas recommandée. L'utilisation de l'espace de noms complet évite la confusion et empêche deux mêmes noms d'identifiant de se heurter.

Lors de l'importation de packages, Python recherche dans la liste des répertoires définis dans sys.path, comme pour le chemin de recherche du module.

Articles intéressants...