Python-Modules
Page PrécédentePage Suivante
Un module vous permet d'organiser logiquement votre code Python. Le regroupement du code associé dans un module facilite la compréhension et l'utilisation du code. Un module est un objet Python avec des attributs nommés arbitrairement que vous pouvez lier et référencer.
Simplement, un module est un fichier composé de code Python. Un module peut définir des fonctions, des classes et des variables. Un module peut également inclure du code exécutable.
Exemple
Le code Python d'un module nommé aname réside normalement dans un fichier nommé aname.py . Voici un exemple de module simple, support.py
def print_func( par ): print "Hello : ", par return
L'importation Déclaration
Vous pouvez utiliser n'importe quel fichier source Python en tant que module en exécutant une instruction d'importation dans un autre fichier source Python. L'importation a la syntaxe suivante −
import module1[, module2[,... moduleN]
Lorsque l'interpréteur rencontre une instruction d'importation, il importe le module si le module est présent dans le chemin de recherche. Un chemin de recherche est une liste de répertoires que l'interpréteur recherche avant d'importer un module. Par exemple, pour importer le module support.py, vous devez mettre la commande suivante en haut du script −
#!/usr/bin/python # Import module support import support # Now you can call defined function that module as follows support.print_func("Zara")
Lorsque le code ci-dessus est exécuté, il produit le résultat suivant −
Hello : Zara
Un module n'est chargé qu'une seule fois, quel que soit le nombre de fois où il est importé. Cela évite que l'exécution du module se reproduise encore et encore si plusieurs importations se produisent.
Le de... l'importation Déclaration
Python de L'instruction vous permet d'importer des attributs spécifiques d'un module dans l'espace de noms actuel. Le de... l'importation a la syntaxe suivante −
from modname import name1[, name2[, ... nameN]]
Par exemple, pour importer la fonction fibonacci depuis le module fib, utilisez l'instruction suivante −
from fib import fibonacci
Cette instruction n'importe pas l'intégralité du module fib dans l'espace de noms actuel ; il introduit simplement l'élément fibonacci du module fib dans la table de symboles globale du module d'importation.
Le de...import * Déclaration
Il est également possible d'importer tous les noms d'un module dans l'espace de noms actuel en utilisant l'instruction d'importation suivante −
from modname import *
Cela permet d'importer facilement tous les éléments d'un module dans l'espace de noms actuel ; cependant, cette déclaration doit être utilisée avec parcimonie.
Localisation des modules
Lorsque vous importez un module, l'interpréteur Python recherche le module dans les séquences suivantes −
-
Le répertoire courant.
-
Si le module n'est pas trouvé, Python recherche alors chaque répertoire dans la variable shell PYTHONPATH.
-
Si tout le reste échoue, Python vérifie le chemin par défaut. Sous UNIX, ce chemin par défaut est normalement /usr/local/lib/python/.
Le chemin de recherche du module est stocké dans le module système sys en tant que sys.path variable. La variable sys.path contient le répertoire actuel, PYTHONPATH, et la valeur par défaut dépendante de l'installation.
Le PYTHONPATH variables
Le PYTHONPATH est une variable d'environnement, consistant en une liste de répertoires. La syntaxe de PYTHONPATH est la même que celle de la variable shell PATH.
Voici un PYTHONPATH typique d'un système Windows −
set PYTHONPATH = c:\python20\lib;
Et voici un PYTHONPATH typique d'un système UNIX −
set PYTHONPATH = /usr/local/lib/python
Espaces de noms et portée
Les variables sont des noms (identificateurs) qui correspondent à des objets. Un espace de noms est un dictionnaire de noms de variables (clés) et de leurs objets correspondants (valeurs).
Une instruction Python peut accéder à des variables dans un espace de noms local et dans l'espace de noms global . Si une variable locale et une variable globale ont le même nom, la variable locale masque la variable globale.
Chaque fonction a son propre espace de noms local. Les méthodes de classe suivent la même règle de portée que les fonctions ordinaires.
Python fait des suppositions éclairées sur le fait que les variables sont locales ou globales. Il suppose que toute variable affectée d'une valeur dans une fonction est locale.
Par conséquent, pour affecter une valeur à une variable globale dans une fonction, vous devez d'abord utiliser l'instruction globale.
L'instruction global VarName indique à Python que VarName est une variable globale. Python arrête de chercher la variable dans l'espace de noms local.
Par exemple, nous définissons une variable Money dans l'espace de noms global. Au sein de la fonction Argent , nous attribuons De l'argent une valeur, donc Python suppose Money comme variable locale. Cependant, nous avons accédé à la valeur de la variable locale Money avant de le définir, donc une UnboundLocalError est le résultat. Décommenter l'instruction globale résout le problème.
#!/usr/bin/python Money = 2000 def AddMoney(): # Uncomment the following line to fix the code: # global Money Money = Money + 1 print Money AddMoney() print Money
La fonction dir( )
La fonction intégrée dir() renvoie une liste triée de chaînes contenant les noms définis par un module.
La liste contient les noms de tous les modules, variables et fonctions définis dans un module. Voici un exemple simple −
Démo en direct#!/usr/bin/python # Import built-in module math import math content = dir(math) print content
Lorsque le code ci-dessus est exécuté, il produit le résultat suivant −
['__doc__', '__file__', '__name__', 'acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'cosh', 'degrees', 'e', 'exp', 'fabs', 'floor', 'fmod', 'frexp', 'hypot', 'ldexp', 'log', 'log10', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh']
Ici, la variable de chaîne spéciale __name__ est le nom du module, et __file__ est le nom du fichier à partir duquel le module a été chargé.
Les globaux() et locaux() Fonctions
Les globaux() et locaux() Les fonctions peuvent être utilisées pour renvoyer les noms dans les espaces de noms globaux et locaux en fonction de l'emplacement d'où ils sont appelés.
Si locals() est appelé depuis une fonction, il renverra tous les noms accessibles localement depuis cette fonction.
Si globals() est appelé depuis une fonction, il renverra tous les noms accessibles globalement depuis cette fonction.
Le type de retour de ces deux fonctions est dictionnaire. Par conséquent, les noms peuvent être extraits à l'aide de la fonction keys().
Le reload() Fonction
Lorsque le module est importé dans un script, le code de la partie de niveau supérieur d'un module n'est exécuté qu'une seule fois.
Par conséquent, si vous souhaitez réexécuter le code de niveau supérieur dans un module, vous pouvez utiliser le reload() fonction. La fonction reload() importe à nouveau un module précédemment importé. La syntaxe de la fonction reload() est la suivante −
reload(module_name)
Ici, module_name est le nom du module que vous souhaitez recharger et non la chaîne contenant le nom du module. Par exemple, pour recharger hello module, procédez comme suit −
reload(hello)
Packages en Python
Un package est une structure hiérarchique de répertoires de fichiers qui définit un environnement d'application Python unique composé de modules, de sous-packages et de sous-sous-packages, etc.
Prenons un fichier Pots.py disponible dans Téléphone annuaire. Ce fichier a la ligne de code source suivante −
#!/usr/bin/python def Pots(): print "I'm Pots Phone"
De la même manière, nous avons deux autres fichiers ayant des fonctions différentes avec le même nom que ci-dessus −
-
Téléphone/RNIS.py fichier ayant la fonction Isdn()
-
Téléphone/G3.py fichier ayant la fonction G3()
Maintenant, créez un autre fichier __init__.py dans Téléphone répertoire −
- Téléphone/__init__.py
Pour rendre toutes vos fonctions disponibles lorsque vous avez importé Phone, vous devez mettre des instructions d'importation explicites dans __init__.py comme suit −
from Pots import Pots from Isdn import Isdn from G3 import G3
Après avoir ajouté ces lignes à __init__.py, toutes ces classes sont disponibles lorsque vous importez le package Phone.
#!/usr/bin/python # Now import your Phone Package. import Phone Phone.Pots() Phone.Isdn() Phone.G3()
Lorsque le code ci-dessus est exécuté, il produit le résultat suivant −
I'm Pots Phone I'm 3G Phone I'm ISDN Phone
Dans l'exemple ci-dessus, nous avons pris l'exemple d'une seule fonction dans chaque fichier, mais vous pouvez conserver plusieurs fonctions dans vos fichiers. Vous pouvez également définir différentes classes Python dans ces fichiers, puis créer vos packages à partir de ces classes.
Python