fondation Python - modules

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 .pyfichier 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é importune déclaration d'importation sysmodule. 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 sysquand cette déclaration, il commencer à chercher sysle 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.pathvariables 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.

sysModule de argvvariable est indiquée en utilisant le point, à savoir de sys.argvtelles formes. Il montre clairement que ce nom est une syspartie du module. Un autre avantage de cette approche est que ce nom n'est pas tout autre programme avec vous un argvconflit variable.

sys.argvVariable 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.argvil 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.pymodule, 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.argvpour nous d'utiliser la variable.

Gardez à l' esprit est que le nom du script en cours d' exécution dans la sys.argvliste 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.pathIl contient une liste de noms dans le dictionnaire des modules importés. Vous pouvez observer sys.pathla première section de la chaîne est vide ---- qu'une chaîne vide représentant le répertoire en cours est également sys.pathpartie à la PYTHONPATHvariable 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.pathcatalogue 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 .pycson extension, est de se convertir en une forme intermédiaire de fichier python. Ce .pycfichier 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 .pycfichiers sont généralement créés dans les correspondants des .pyfichiers de répertoires sont situés. Si Python ne pas l' autorisation d'utiliser des fichiers d'écriture dans ce répertoire, .pycle fichier ne sera pas créé.

2. from..importDéclaration

Si vous voulez diriger les argvvariables dans votre programme (pour éviter toutes les entrées de temps sys.), vous pouvez utiliser from sys import argvpour accomplir cette déclaration.

Avertissement : En général , d' essayer, vous devriez éviter d' utiliser des from...importdéclarations, essayez d'utiliser la importdé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 .pyest 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.pathsous 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...importsyntaxe du modèle (Enregistrer sous mymodule_demo2.py):

from mymodule import say_hi, __version__

say_hi()
print('Version', __version__)

mymodule_demo2.pyLe contenu et la sortie mymodule_demo.pydu contenu de la sortie est le même.

Il convient de noter ici que, si elle est introduite dans mymodulele 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 importdéclarations, bien que cela fera de votre programme devient un peu plus.

Vous pouvez également utiliser:

from mymodule import *

Cela importera que say_hitous 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. dirFonctions

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 dirimporté l' sysutilisation du module. On peut voir une énorme liste d'attributs qu'il contient.

Ensuite, nous ne transmettons pas les paramètres sous forme de dirfonction. 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 dirfonctionnement de la fonction, nous définissons une nouvelle variable aet lui attribuer une valeur, puis vérifier les dirrésultats retournés, nous pouvons trouver la liste des mêmes nom apparaît dans une nouvelle valeur. Nous avons delretiré une déclaration variable ou un attribut, ce changement est de nouveau reflété dans la dirfonction du contenu est situé.

A propos d' delun 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 strattribut (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__.pydossier 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.

ressources

[1] Module · un octet de Python

Publié 66 articles originaux · louange 101 won · vues 30000 +

Je suppose que tu aimes

Origine blog.csdn.net/u010705932/article/details/104410405
conseillé
Classement