Comment créer, importer et réutiliser votre propre module en Python

Que vous soyez un expert ou un débutant en programmation Python, vous devez être familiarisé avec la commande import modules . Cependant, en tant que nouveau venu, vous ne savez peut-être pas d'où viennent ces modules.

Examinons de plus près l'origine de ces modules, ainsi que la façon de les créer et de les importer pour les réutiliser.

L'une des meilleures pratiques lorsque vous travaillez avec la plupart des langages côté serveur consiste à modulariser votre code afin qu'il soit réutilisable. Parce que Python est orienté objet, c'est l'un de ces langages qui rend possible la réutilisabilité du code.

La modularisation du code implique l'écriture de codes qui exécutent différentes instructions dans des blocs. Il est utilisé pour séparer les tâches les unes des autres.

Lorsque vous modularisez un code, vous lui donnez un nom unique. Ce nom est son identité et signifie que la prochaine fois que vous devrez utiliser ce bloc de code, il vous suffira d'appeler son nom et non le code entier.

Cette pratique rend votre travail beaucoup plus facile et plus rapide lors d'un projet réel. La modularisation du code améliore également la vitesse d'exécution et facilite les tests. En substance, cela rend votre code plus efficace et plus lisible.

Bien que notre exemple ici ne soit pas basé sur la programmation orientée objet (POO), nous devons en discuter brièvement avant de passer à la création d'un module.

Le code que vous avez l'intention de réutiliser peut parfois être autonome en tant que fonctions individuelles. Mais cela peut aussi être sous la forme de méthodes dans une classe . C'est alors que le concept de POO entre en jeu.

La POO est la présentation de codes en tant qu'objets indépendants sous la forme d'une classe. Chaque objet a alors ses attributs et ses méthodes.

Ces attributs sont les caractéristiques de la classe, tandis que chaque méthode définit le comportement des attributs.

Au lieu d'écrire du code long qui est moins efficace – une convention dans la programmation procédurale – votre code devient plus efficace et spécifique en POO. La raison en est que les fonctions et les données sont stockées dans des classes indépendantes dans la POO, par opposition à la séparation des deux dans la programmation procédurale.

Chaque classe que vous créez prend alors une identité. Ainsi, lorsque vous avez besoin d'un module nommé d'une classe, vous l'appelez en référence à cette classe.

Pour mieux comprendre, consultez notre guide du débutant pour comprendre la POO .

Voyons maintenant comment nous pouvons réutiliser la fonction pour un compteur de mots dans un autre fichier Python. Ce guide se concentrera uniquement sur la création de fonctions réutilisables qui ne sont pas à l'intérieur d'un objet.

Tout d'abord, ouvrez une invite de commande à n'importe quel emplacement de votre ordinateur pour démarrer un nouveau projet. Dans ce cas, nous utiliserons un nom de projet de word_count . Pour ce faire, tapez mkdir word_count .

Ensuite, utilisez votre outil d'environnement virtuel préféré pour créer un nouvel environnement virtuel . Si vous en avez déjà créé un, activez-le simplement. Assurez-vous que vous êtes toujours dans le répertoire de votre projet.

Comme bonne pratique, pour créer la fonction de compteur de mots, nous essayons d'abord de trouver une formule brute pour la calculer. En règle générale, vous pouvez trouver un nombre de mots en ajoutant un au nombre d'espaces dans une phrase. Notez que même si vous n'avez peut-être pas besoin d'un nombre de mots, c'est la façon dont l'idée se rapporte à la réutilisabilité du code qui compte pour cette explication.

Ensuite, ouvrez un éditeur de texte à l'emplacement de votre projet et créez un nouveau fichier Python. Dans ce cas, le fichier est nommé wordcounter.py ; assurez-vous d'utiliser la bonne extension .py .

Voici à quoi ressemble le fichier wordcounter :

Maintenant que le code brut fonctionne, nous le modulons ensuite en créant une fonction qui rend le code réutilisable:

C'est tout; nous avons créé un module de compteur de mots. Voyons comment le réutiliser.

N'oubliez pas que vous avez précédemment créé un fichier nommé wordcounter.py . Ce fichier contient une fonction appelée CountWords . Si vous avez besoin de cette fonction dans un nouveau fichier et que vous ne voulez pas réécrire tout le code ou la fonction, tout ce que vous avez à faire est d'importer cette fonction en tant que module dans votre nouveau fichier.

Notez que tous vos fichiers Python doivent être dans le même répertoire, dans ce cas. Pour vous assurer que c'est le cas, créez simplement un nouveau fichier Python dans le même répertoire où vous avez le fichier wordcounter.py .

Voici à quoi ressemble le nouveau fichier:

Dans l'extrait de code ci-dessus, CountWords est la fonction à l'intérieur du fichier wordcounter.py . Pour réutiliser cette fonction dans un nouveau fichier Python, nous l'importons depuis son fichier parent ( wordcounter.py ).

Que faire si le nouveau fichier n'est pas dans le même répertoire que le fichier du module? Dans ces cas, vous devez référencer le module en utilisant une importation absolue.

Pour comprendre cela un peu plus loin, supposons que vous ayez créé un nouveau fichier dans le répertoire de votre projet. Mais le fichier à partir duquel vous avez l'intention d'importer votre fonction (qui est wordcounter , dans ce cas), se trouve dans un autre dossier du répertoire de votre projet — appelons ce dossier subword_count .

Pour importer votre module de wordcounter (qui se trouve maintenant dans le dossier subword_count ) dans un nouveau fichier Python, vous devez l'appeler absolument. Pour voir comment cela fonctionne, créez un nouveau fichier dans le répertoire de votre projet, donnez-lui votre nom préféré et importez votre module comme indiqué dans l'extrait de code ci-dessous:

Lors d'une importation absolue, Python parcourt le dossier parent ( subword_count dans ce cas) et localise le fichier ou le module contenant la fonction d'intérêt ( CountWords ).

Pour décomposer la signification de l'importation absolue ci-dessus, subword_count est un dossier dans le répertoire de votre projet qui contient le fichier wordcounter.py . Ce fichier contient alors la fonction CountWords .

Modulariser et réutiliser votre code est une bonne pratique pour tout projet que vous exécutez. Si vous écrivez la POO, ce que vous êtes susceptible de faire souvent, vous pouvez importer une classe à partir d'un module ou appeler une fonction à partir d'une classe. Si la classe est dans un dossier, importez-la absolument dans votre nouveau fichier.

La même pratique s'applique aux fonctions qui ne sont pas dans un objet. En fonction de la disposition de votre projet, vous pouvez les importer explicitement ou absolument, comme nous l'avons fait ci-dessus.