Dans le dernier chapitre, vous avez appris à réutiliser le travail en définissant une fonction dans votre code de programme. Donc, si vous souhaitez réutiliser un certain nombre de fonctions dans d'autres programmes que vous écrivez les mots, comment dois-je faire? Comme vous pouvez l'imaginer, la réponse est des modules (modules).
Il y a plusieurs façons d'écrire un module, le plus simple est de créer une fonction qui contient les variables .py
fichier avec l'extension.
Une autre approche consiste à utiliser l'interpréteur Python lui - même est écrit dans la langue locale aux modules d'écriture. Par exemple, vous pouvez utiliser le langage C pour écrire le module Python, et compilé, vous pouvez les utiliser dans votre code Python par interpréteur Python standard.
Un module de programme peut encore être introduit dans et utiliser leurs fonctions. La même chose est vraie lorsque nous utilisons les fonctionnalités de la bibliothèque standard de Python. Tout d' abord, nous devons comprendre comment utiliser les modules de la bibliothèque standard.
Cas (enregistré comme module_using_sys.py):
import sys
print('The command line arguments are:')
for i in sys.argv:
print(i)
print('\n\nThe PYTHONPATH is', sys.path, '\n')
sortie:
$ python module_using_sys.py we are arguments
The command line arguments are:
module_using_sys.py
we
are
arguments
The PYTHONPATH is ['/tmp/py',
# many entries here, not shown here
'/Library/Python/2.7/site-packages',
'/usr/local/lib/python2.7/site-packages']
Tout d' abord, nous avons adopté import
une déclaration d'importation sys
module. En gros, ce code sera traduit en Python nous dit que nous voulons utiliser ce module. le module sys contient environnement interpréteur Python pertinent et la fonction, qui est appelé le système fonctionne (système).
Lorsque Python fonctionne import sys
quand cette déclaration, il commencer à chercher sys
le module. Dans ce cas, car il est un module intégré, donc Python savoir où le trouver.
Si ce n'est pas un pré-compilé modules, à savoir des modules écrit en Python, l'interpréteur Python de ses sys.path
variables de répertoire de recherche fourni. Si vous trouvez le module correspondant, l'instruction du module commencera à fonctionner, et peut travailler pour vous d'utiliser. Il convient de noter ici que l'initialisation juste dans notre premier module d'importation complète.
sys
Module de argv
variable est indiquée en utilisant le point, à savoir de sys.argv
telles formes. Il montre clairement que ce nom est une sys
partie du module. Un autre avantage de cette approche est que ce nom n'est pas tout autre programme avec vous un argv
conflit variable.
sys.argv
Variable est une chaîne de la série liste (liste) (la liste sera dans un chapitre ultérieur sera expliqué en détail). Plus précisément, sys.argv
il contient les arguments de ligne de commande * (Arguments de ligne de commande) * Cette liste, qui est votre programme en utilisant des paramètres passés à la ligne de commande.
Si vous utilisez un IDE pour écrire et exécuter ces programmes, recherchez les options liées au paramètre de ligne de commande spécifiée dans le menu du programme.
Ici, quand nous courons python module_using_sys.py we are arguments
, nous passons python
à exécuter la commande module_using_sys.py
module, derrière le contenu du programme est le paramètre qui lui est passé. les paramètres de ligne de commande Python sont stockés dans sys.argv
pour nous d'utiliser la variable.
Gardez à l' esprit est que le nom du script en cours d' exécution dans la sys.argv
liste sera toujours au premier rang. Par conséquent, dans ce cas , nous aurons la relation de correspondance suivante: la 'module_using_sys.py'
correspondance sys.argv[0]
, la 'we'
correspondance sys.argv[1]
, la 'are'
correspondance sys.argv[2]
, la 'arguments'
correspondance sys.argv[3]
. A noter que Python commence à compter de 0 au lieu de 1.
sys.path
Il contient une liste de noms dans le dictionnaire des modules importés. Vous pouvez observer sys.path
la première section de la chaîne est vide ---- qu'une chaîne vide représentant le répertoire en cours est également sys.path
partie à la PYTHONPATH
variable d'environnement équivalent. Cela signifie que vous pouvez importer directement des modules situés dans le répertoire courant. Dans le cas contraire, vous devrez placer votre module dans le sys.path
catalogue sont répertoriés dans le milieu.
Notez également que le répertoire en cours fait référence au début du répertoire du programme. Vous pouvez exécuter import os; print(os.getcwd())
pour voir ce que vous trouvez actuellement dans le répertoire du programme.
1. Appuyez sur les fichiers de bytecode compilé
L' importation d' un module est une chose coûteuse, donc Python présente certaines compétences pour leur permettre de plus rapidement complète. Une façon est de créer byte-code compilé * (Byte-compilé) * fichier, le fichier de .pyc
son extension, est de se convertir en une forme intermédiaire de fichier python. Ce .pyc
fichier est utile ---- plus rapidement la prochaine fois que vous importez un module différent d'un autre programme, parce que lorsque vous importez le module requis fait partie intégrante du processus a été achevé. En même temps, ces fichiers de code octet sont compilés indépendamment du fonctionnement de la plate - forme.
Remarque: Ces .pyc
fichiers sont généralement créés dans les correspondants des .py
fichiers de répertoires sont situés. Si Python ne pas l' autorisation d'utiliser des fichiers d'écriture dans ce répertoire, .pyc
le fichier ne sera pas créé.
2. from..import
Déclaration
Si vous voulez diriger les argv
variables dans votre programme (pour éviter toutes les entrées de temps sys.
), vous pouvez utiliser from sys import argv
pour accomplir cette déclaration.
Avertissement : En général , d' essayer, vous devriez éviter d' utiliser des
from...import
déclarations, essayez d'utiliser laimport
déclaration. Ceci permet d' éviter les conflits de noms dans votre programme, mais aussi de faciliter la lecture du programme.
cas:
from math import sqrt
print("Square root of 16 is", sqrt(16))
sortie:
4.0
3. Module __name__
Chaque module a un nom, et le nom de l'instruction du module dans lequel ils sont situés le module peut être trouvé. Ceci est très utile pour module de détermination de fonctionner indépendamment ou être introduit dans ce but spécifique est de venir en cours d' exécution. Comme mentionné précédemment, lorsque le module est d' abord introduit, il contient le code doit être exécuté. Nous pouvons faire le module en exécutant cette fonction de différentes façons, selon que ce soit pour leur propre usage ou importés d'autres modules viennent de. Ce module peut être utilisé __name__
pour obtenir les propriétés.
Case (Enregistrer sous module_using_name.py
):
if __name__ == '__main__':
print('This program is being run by itself')
else:
print('I am being imported from another module')
sortie:
$ python module_using_name.py
This program is being run by itself
$ python
>>> import module_using_name
I am being imported from another module
>>>
Chaque module Python définit ses __name__
propriétés. Si c'est le __main__
même attribut représente le module est géré par un indépendant utilisateur, afin que nous puissions prendre les mesures appropriées.
4. Écrivez vos propres modules
Écrivez vos propres modules est très simple, cela est en fait ce que vous avez fait! En effet , chaque programme Python est également un module. Il vous suffit de vous assurer qu'il .py
est le nom de l' extension. Le cas suivant fera une explication claire.
Case (Enregistrer sous mymodule.py
):
def say_hi():
print('Hi, this is mymodule speaking.')
__version__ = '0.1'
Présenté ci-dessus est un module simple. Comme vous pouvez le voir, par rapport au programme Python que nous avons utilisé en général ne fournit pas de distinction particulière. Ensuite, nous verrons comment utiliser ce module dans d'autres programmes Python.
Rappelez - vous que le module doit être placé sous la même procédure avec l'autre , nous sommes sur le point d'importer le répertoire du module, ou est placé sys.path
sous l' un des répertoires listés.
Un autre module (Enregistrer sous mymodule_demo.py
):
import mymodule
mymodule.say_hi()
print('Version', mymodule.__version__)
sortie:
$ python mymodule_demo.py
Hi, this is mymodule speaking.
Version 0.1
Vous remarquerez que nous utilisons le même identificateur de point d'accès aux membres du module. Python fait bonne réutilisation des symboles, qui est plein de type d'atmosphère « Pythonic », ce qui nous permet de ne pas avoir à apprendre de nouvelles façons de faire la même chose.
Voici une utilisation from...import
syntaxe du modèle (Enregistrer sous mymodule_demo2.py
):
from mymodule import say_hi, __version__
say_hi()
print('Version', __version__)
mymodule_demo2.py
Le contenu et la sortie mymodule_demo.py
du contenu de la sortie est le même.
Il convient de noter ici que, si elle est introduite dans mymodule
le module existe déjà __version__
dans ce nom, ce serait un conflit. Cela peut être parce que chaque module utilise habituellement ce nom pour déclarer leur numéro de version respective. Nous vous conseillons donc d'utiliser le meilleur la plupart des import
déclarations, bien que cela fera de votre programme devient un peu plus.
Vous pouvez également utiliser:
from mymodule import *
Cela importera que say_hi
tous les noms de communes, etc., mais ne pas importer le __version__
nom, car celui - ci commencent par un double trait de soulignement.
Avertissement: Rappelez -vous que vous devez éviter d' importer ce formulaire, qui est
from mymodule import
.
5. dir
Fonctions
Intégré des dir()
fonctions retourne une liste de noms peuvent être définis par l'objet. Si l'objet est un module, la liste des fonctions, des variables dans la fonction de classe définie.
La fonction accepte les paramètres. Si l'argument est le nom du module, la fonction retourne une liste de noms du module spécifié. Si aucun argument, la fonction retourne une liste du nom du module.
cas:
$ python
>>> import sys
# 给出 sys 模块中的属性名称
>>> dir(sys)
['__displayhook__', '__doc__',
'argv', 'builtin_module_names',
'version', 'version_info']
# 此处只展示部分条目
# 给出当前模块的属性名称
>>> dir()
['__builtins__', '__doc__',
'__name__', '__package__','sys']
# 创建一个新的变量 'a'
>>> a = 5
>>> dir()
['__builtins__', '__doc__', '__name__', '__package__', 'a']
# 删除或移除一个名称
>>> del a
>>> dir()
['__builtins__', '__doc__', '__name__', '__package__']
tout ce que nous voyons d' abord est dir
importé l' sys
utilisation du module. On peut voir une énorme liste d'attributs qu'il contient.
Ensuite, nous ne transmettons pas les paramètres sous forme de dir
fonction. Par défaut, il renvoie une liste d'attributs du module en cours. A noter que la liste des modules importés fait également partie de cette liste.
Pour observer le dir
fonctionnement de la fonction, nous définissons une nouvelle variable a
et lui attribuer une valeur, puis vérifier les dir
résultats retournés, nous pouvons trouver la liste des mêmes nom apparaît dans une nouvelle valeur. Nous avons del
retiré une déclaration variable ou un attribut, ce changement est de nouveau reflété dans la dir
fonction du contenu est situé.
A propos d' del
un petit indice ---- Cette déclaration est utilisée pour supprimer un nom de variable ou, lorsque cette instruction est exécutée, dans ce cas, qui est del a
, vous ne serez plus en mesure d'accéder à la variable a
---- comme vous avez jamais il est trop général.
A noter que la dir()
fonction peut être de tout objet de travail. Telle que l' exécution dir(str)
accès peut str
attribut (String, String) classe.
En même temps, il y a une vars () fonction peut également revenir à vos valeurs de propriété, mais seulement possible, il ne peut pas fonctionner correctement pour toutes les classes.
6. paquet
Maintenant, vous devez commencer à se conformer à la hiérarchie pour organiser votre programme. Variable, généralement dans les fonctions, variables globales fonctionnent normalement situé à l'intérieur du module. Si vous souhaitez organiser ces modules, comment devrions-nous faire? Ceci est le package (packages) le temps d'être sur scène.
Elle se réfère à un emballage comprenant un module spécial avec un __init__.py
dossier de fichiers, ce qui indique que le dossier vers le python est particulier car il contient des modules python.
Imaginons: vous voulez créer un package appelé « monde », et qui contient aussi un « asie », « afrique » et d'autres sous-ensemble, alors que ces paquets sous sont inclus, tels que les modules « Inde », « madagascar » .
Voici la structure que vous allez construire un dossier:
- <some folder present in the sys.path>/
- world/
- __init__.py
- asia/
- __init__.py
- india/
- __init__.py
- foo.py
- africa/
- __init__.py
- madagascar/
- __init__.py
- bar.py
Un paquet peut être organisé commodément module de couches. Vous serez dans la bibliothèque standard pour voir à ce sujet dans de nombreux cas.
résumé
Fonction comme un programme tel que, dans la partie réutilisable, le module réutilisable est un programme. Package est organisé hiérarchiquement à un autre module. Python est inclus avec la bibliothèque standard est un exemple d'un groupe de paquets associés avec le module.
Nous savons déjà comment utiliser ces modules et de créer vos propres modules.
Ensuite, nous allons apprendre quelques concepts intéressants, on les appelle des structures de données.