Comment écrire des modules dans Python 3

introduction

Lesmodules Python sont des fichiers.py constitués de code Python. Tout fichier Python peut être référencé en tant que module.

Certains modules sont disponibles via lesPython Standard Library et sont donc installés avec votre installation Python. D'autres peuvent êtreinstalled avec le gestionnaire de packages de Pythonpip. De plus, vous pouvez créer vos propres modules Python puisque les modules sont composés de fichiers Python.py.

Ce tutoriel vous guidera dans la rédaction de modules Python pour une utilisation dans d’autres fichiers de programmation.

Ecrire et importer des modules

Écrire un module, c'est comme écrire n'importe quel fichier Python. Les modules peuvent contenir des définitions de fonctions, de classes et de variables pouvant ensuite être utilisées dans d'autres programmes Python.

À partir de notre Python 3local programming environment ouserver-based programming environment, commençons par créer un fichierhello.py que nous importerons plus tard dans un autre fichier.

Pour commencer, nous allonscreate a function qui imprimeHello, World!:

hello.py

# Define a function
def world():
    print("Hello, World!")

Si nous exécutons le programme sur la ligne de commande avecpython hello.py, rien ne se passera puisque nous n'avons pas dit au programme de faire quoi que ce soit.

Créons un deuxième fichierin the same directory appelémain_program.py afin que nous puissionsimport the module que nous venons de créer, puis appelons la fonction. Ce fichier doit se trouver dans le même répertoire pour que Python sache où trouver le module car il ne s’agit pas d’un module intégré.

main_program.py

# Import hello module
import hello


# Call function
hello.world()

Puisque nous sommesimporting a module, nous devons appeler la fonction en référençant le nom du module en notation par points.

Nous pourrions à la place importer le module en tant quefrom hello import world et appeler la fonction directement en tant queworld(). Vous pouvez en savoir plus sur cette méthode en lisanthow to using fromimport when importing modules.

Maintenant, nous pouvons exécuter le programme sur la ligne de commande:

python main_program.py

Lorsque nous le faisons, nous recevons le résultat suivant:

OutputHello, World!

Pour voir comment nous pouvons utiliservariables dans un module, ajoutons une définition de variable dans notre fichierhello.py:

hello.py

# Define a function
def world():
    print("Hello, World!")

# Define a variable
shark = "Sammy"

Ensuite, nous allons appeler la variable dans une fonctionprint() dans notre fichiermain_program.py:

main_program.py

# Import hello module
import hello


# Call function
hello.world()

# Print variable
print(hello.shark)

Une fois le programme exécuté, nous recevrons le résultat suivant:

OutputHello, World!
Sammy

Enfin, nous allons égalementdefine a class dans le fichierhello.py. Nous allons créer la classeOctopus avec les attributsname etcolor et une fonction qui affichera les attributs lorsqu'elle sera appelée.

hello.py

# Define a function
def world():
    print("Hello, World!")

# Define a variable
shark = "Sammy"


# Define a class
class Octopus:
    def __init__(self, name, color):
        self.color = color
        self.name = name

    def tell_me_about_the_octopus(self):
        print("This octopus is " + self.color + ".")
        print(self.name + " is the octopus's name.")

Nous allons maintenant ajouter la classe à la fin de notre fichiermain_program.py:

main_program.py

# Import hello module
import hello


# Call function
hello.world()

# Print variable
print(hello.shark)

# Call class
jesse = hello.Octopus("Jesse", "orange")
jesse.tell_me_about_the_octopus()

Une fois que nous avons appelé la classe Octopus avechello.Octopus(), nous pouvons accéder aux fonctions et attributs de la classe dans l'espace de noms du fichiermain_program.py. Cela nous permet d'écrirejesse.tell_me_about_the_octopus() sur la dernière ligne sans appelerhello. Nous pourrions également, par exemple, appeler l’un des attributs de la classe tels quejesse.color sans référencer le nom du modulehello.

Lorsque nous exécutons le programme, nous recevons le résultat suivant:

OutputHello, World!
Sammy
This octopus is orange.
Jesse is the octopus's name.

Il est important de garder à l'esprit que, bien que les modules soient souvent des définitions, ils peuvent également implémenter du code. Pour voir comment cela fonctionne, réécrivons notre fichierhello.py afin qu'il implémente la fonctionworld():

hello.py

# Define a function
def world():
    print("Hello, World!")

# Call function within module
world()

Nous avons également supprimé les autres définitions du fichier.

Maintenant, dans notre fichiermain_program.py, nous allons supprimer toutes les lignes à l'exception de l'instruction d'importation:

main_program.py

# Import hello module
import hello

Lorsque nous exécuteronsmain_program.py, nous recevrons le résultat suivant:

OutputHello, World!

Cela est dû au fait que le modulehello a implémenté la fonctionworld() qui est ensuite transmise àmain_program.py et s'exécute lorsquemain_program.py s'exécute.

Un module est un fichier programme Python composé de définitions ou de code que vous pouvez exploiter dans d'autres fichiers programme Python.

Accès aux modules d'un autre répertoire

Les modules peuvent être utiles pour plusieurs projets de programmation. Dans ce cas, il est moins judicieux de conserver un module dans un répertoire particulier lié à un projet spécifique.

Si vous souhaitez utiliser un module Python à partir d'un emplacement autre que le même répertoire que votre programme principal, vous disposez de quelques options.

Ajouter des chemins

Une option consiste à appeler le chemin du module via les fichiers de programmation utilisant ce module. Cela devrait être considéré comme une solution temporaire pouvant être apportée au cours du processus de développement car cela ne rend pas le module disponible à l'échelle du système.

Pour ajouter le chemin d'un module à un autre fichier de programmation, vous allez commencer par importer le modulesys avec tous les autres modules que vous souhaitez utiliser dans votre fichier programme principal.

Le modulesys fait partie de la bibliothèque standard Python et fournit des paramètres et des fonctions spécifiques au système que vous pouvez utiliser dans votre programme pour définir le chemin du module que vous souhaitez implémenter.

Par exemple, disons que nous avons déplacé le fichierhello.py et qu'il se trouve maintenant sur le chemin/usr/sammy/ tandis que le fichiermain_program.py est dans un autre répertoire.

Dans notre fichiermain_program.py, nous pouvons toujours importer le modulehello en important le modulesys puis en ajoutant/usr/sammy/ au chemin que Python vérifie pour les fichiers.

main_program.py

import sys
sys.path.append('/usr/sammy/')

import hello
...

Tant que vous définissez correctement le chemin du fichierhello.py, vous pourrez exécuter le fichiermain_program.py sans aucune erreur et recevoir la même sortie que ci-dessus lorsquehello.py était dans le même répertoire.

Ajout du module au chemin Python

Une deuxième option consiste à ajouter le module au chemin où Python vérifie la présence de modules et de packages. Il s'agit d'une solution plus permanente qui rend le module disponible dans l'ensemble de l'environnement ou du système, ce qui rend cette méthode plus portable.

Pour savoir quel chemin vérifie Python, exécutez l'interpréteur Python à partir de votre environnement de programmation:

python

Ensuite, importez le modulesys:

import sys

Ensuite, demandez à Python d’imprimer le chemin système:

print(sys.path)

Ici, vous recevrez une sortie avec au moins un chemin système. Si vous êtes dans un environnement de programmation, vous pouvez en recevoir plusieurs. Vous voudrez peut-être rechercher celui qui se trouve dans l'environnement que vous utilisez actuellement, mais vous voudrez peut-être également ajouter le module au chemin Python de votre système principal. Ce que vous recherchez ressemblera à ceci:

Output'/usr/sammy/my_env/lib/python3.5/site-packages'

Vous pouvez maintenant déplacer votre fichierhello.py dans ce répertoire. Une fois cette opération terminée, vous pouvez importer le modulehello comme d'habitude:

main_program.py

import hello
...

Lorsque vous exécutez votre programme, il devrait se terminer sans erreur.

La modification du chemin de votre module peut vous assurer que vous pouvez accéder au module quel que soit le répertoire dans lequel vous vous trouvez. Ceci est particulièrement utile si vous avez plusieurs projets référençant un module particulier.

Conclusion

L'écriture d'un module Python revient à écrire tout autre fichier Python.py. Ce tutoriel explique comment écrire des définitions dans un module, utiliser ces définitions dans un autre fichier de programmation Python, et décrit les options permettant de conserver le module pour y accéder.

Vous pouvez en savoir plus sur l'installation et l'importation de modules en lisantHow To Import Modules in Python 3.