[Hikari-Python] Module du chapitre 08-01 (module d'importation)

[Python] Chapitre 08-01 Importation de modules

J'ai créé ma propre fonction originale au chapitre 06. Vous pouvez demander à d'autres personnes d'utiliser ces fonctions personnalisées. Vous pouvez combiner plusieurs fonctions que vous avez créées dans un seul fichier, et ce fichier est appelé un ** module (partie) **.

En fait, divers modules créés par des programmeurs Python du monde entier sont publiés sur Internet. Ces modules sont gratuits et sont utilisés par ** import **.

Il existe divers modules accessibles au public tels que des modules utilisés dans l'IA et l'IoT, et des modules utilisés dans la création de jeux et l'analyse de données.

Dans ce chapitre, nous allons d'abord expliquer comment importer des modules que vous avez créés vous-même, puis importer des modules qui ont été créés sur Internet.

Importez votre propre module

Créons en fait des fonctions personnalisées et sauvegardons-les en tant que modules. Tout d'abord, créez un module, mais ne créez pas encore chap08 </ font>, mais créez-le directement sous ** [python] ** ci-dessous. (Cliquez avec le bouton droit sur [python] comme indiqué ci-dessous) image.png

Enregistrez-le ensuite sous le nom de fichier sampmod08_01 </ font>. (Il s'agit de sampmod08_01. Ce n'est pas de sampmod08-01. → Il ne peut pas être lu en utilisant un tiret dans le nom du fichier du module.)

.sampmod08_01.py


def my_func():
    print('Il est exécuté à partir de la fonction dans le module.')

def calc_func(x, y):
    return x**2 + y

my_func()
print(calc_func(3, 3))

Ensuite, créez un nouveau chap08 </ font>, et dedans, le nom de fichier samp08-01-01.py </ font> Créez un fichier avec et écrivez le code suivant. Exécutez ensuite samp08-01-01.py </ font>.

.samp08-01-01.py


import sampmod08_01

[Résultat de l'exécution] </ font> Il est exécuté à partir de la fonction dans le module. 12

La ** instruction import ** charge votre propre module ** sampmod08_01.py ** et l'exécute.

Cela peut également être fait avec ** Python Console **. Saisissez le code suivant à partir de la ** console Python **.

>>> import sampmod08_01
Il est exécuté à partir de la fonction dans le module.
12

Vous pouvez voir que le même résultat est généré même si vous l'importez avec Python Console. * </ font> Après l'exécution dans la console Python, assurez-vous de cliquer sur ce qui suit pour l'arrêter. (Parce qu'il reste importé) image.png image.png

Appelez la fonction importée

Modifions maintenant un peu le module précédent. Comme précédemment, créez le nom de fichier sampmod08_02 </ font> directement sous ** [python] **. Entrez ensuite le code ci-dessous.

.sampmod08_02.py


def my_func():
    print('Il est exécuté à partir de la fonction dans le module.')

def calc_func(x, y):
    return x**2 + y

Cette fois, je n'ai pas créé la fonction d'appel dans le module. Considérez ceci ** appeler une fonction depuis l'extérieur du module **. Créez un fichier avec le nom de fichier samp08-01-02.py </ font> dans chap08 </ font> et utilisez le code suivant S'il vous plait écrivez. Exécutez ensuite samp08-01-02.py </ font>.

.samp08-01-02.py


import sampmod08_02

sampmod08_02.my_func()
print(sampmod08_02.calc_func(3, 3))

[Résultat de l'exécution] </ font> Il est exécuté à partir de la fonction dans le module. 12

Cette fois, il n'y a pas d'appelant dans le module, mais dans ** samp08-01-02.py **. Lors de l'appel d'une fonction dans un autre module

Nom du module à appeler.Fonctions du module à appeler

Il peut être appelé au format.

Comment aliaser un module

Auparavant, lors de l'appel d'une fonction dans un autre module, je l'appelais ** sampmod08_02.my_func () ** ou ** sampmod08_02.calc_func (3, 3) **, mais le nom du module est long et il faut du temps pour entrer. Ça prendra.

Une méthode courante dans de tels cas consiste à utiliser ** as ** pour spécifier un alias.

importer le nom du module à appeler en tant que module Alias

Créez un fichier avec le nom de fichier samp08-01-03.py </ font> dans chap08 </ font> et utilisez le code suivant S'il vous plait écrivez. Exécutez ensuite samp08-01-03.py </ font>.

.samp08-01-03.py


import sampmod08_02 as sm0802

sm0802.my_func()
print(sm0802.calc_func(3, 3))

[Résultat de l'exécution] </ font> Il est exécuté à partir de la fonction dans le module. 12

En spécifiant l'alias du module, je pense que le nom du module est un peu plus court. Souvent, lors de la lecture de l'extérieur pour une utilisation dans l'IA, vous spécifiez souvent un alias.

De plus, si vous regardez attentivement, vous réutilisez le module précédent. Vous pouvez voir comment les modules sont réutilisés sans avoir à créer de nouveaux modules un par un. C'est aussi l'avantage du module.

Importer par de

Après l'importation, j'ai trouvé que je pouvais exécuter des fonctions dans d'autres modules. J'ai également abordé la spécification des alias. Cependant, il est difficile de spécifier le nom du module (alias) tel que ** sm0802.my_func () ** de toute façon.

Vous pouvez donc résoudre ce problème en utilisant from lors de l'importation. En général, spécifiez ce qui suit.

depuis le nom du module importation nom de la fonction 1,Nom de la fonction 2 ...

Écrivons-le réellement. Importons le sampmod08_02 </ font> de plus tôt. Cette fois, je vais l'exécuter à partir de ** Python Console **.

>>> from sampmod08_02 import my_func
>>> my_func()
Il est exécuté à partir de la fonction dans le module.
>>> sampmod08_02.calc_func(3, 10)
19

Tout d'abord, ** from ** charge le nom du module et ** import ** charge la fonction ** my_func **. Ce faisant, vous pouvez appeler la fonction uniquement avec ** my_func () ** sans spécifier ** sampmod08_02.my_func () **.

Notez que ** calc_func ** n'est pas spécifié à la place de ** import **, vous devez donc définir ** sampmod08_02.calc_func (3, 10) ** pour l'appeler.

<Supplément> À propos de \ _ \ _ nom \ _ \ _ == '\ _ \ _ main \ _ \ _'

Je n'ai pas vu ce ** \ _ \ _ nom \ _ \ _ == '\ _ \ _ main \ _ \ _' ** en pratique, mais ce sera peut-être une question dans l'examen d'ingénieur d'information de base. Je l'ai écrit dans le sens où vous ne devriez pas paniquer si vous regardez ce code.

Tout d'abord, le programme suivant écrit en ** samp08-01-01.py **,

.sampmod08_01.py


def my_func():
    print('Il est exécuté à partir de la fonction dans le module.')

def calc_func(x, y):
    return x**2 + y

my_func()
print(calc_func(3, 3))

J'ai confirmé que lorsque j'importe ce module, il fonctionne comme suit.

>>> import sampmod08_01
Il est exécuté à partir de la fonction dans le module.
12

Cependant, vous pouvez également empêcher les fonctions du module d'être appelées même si vous les importez, par exemple pour vérifier l'opération. Inversement, il peut être émis lorsque le module lui-même est exécuté. Créez le nom de fichier sampmod08_03 </ font> directement sous ** [python] **. Entrez ensuite le code ci-dessous.

sampmod08_03.py


def my_func():
    print('Il est exécuté à partir de la fonction dans le module.')


def calc_func(x, y):
    return x**2 + y


if __name__ == '__main__':
    my_func()
    print(calc_func(3, 4))

Essayez de l'importer dans la ** console Python **. Saisissez le code suivant à partir de la ** console Python **. (Vous pouvez probablement voir que rien n'est sorti.)

>>> import sampmod08_03

Cela se fait en écrivant la condition ** \ _ \ _ nom \ _ \ _ == '\ _ \ _ main \ _ \ _' ** dans l'instruction if afin que la fonction ne soit pas appelée soudainement lors de l'importation. Vous pouvez passer.

Pour exécuter cette fonction, vous devez spécifier la fonction dans le module importé par ** Python Console ** et l'exécuter. ..

>>> import sampmod08_03
>>> sampmod08_03.my_func()
Il est exécuté à partir de la fonction dans le module.
>>> sampmod08_03.calc_func(3,5)
14

De plus, si vous exécutez ** sampmod08_03.py ** plus tôt, la sortie sera la suivante. Comme ceci est exécuté avec un module appelé sampmod08_03.py comme principal, il est possible d'appeler des fonctions dans l'instruction if. (Vous pouvez voir que le résultat de la fonction calc_func est différent dans le résultat de l'exécution.)

[Résultat de l'exécution] </ font> Il est exécuté à partir de la fonction dans le module. 13

finalement

Cette fois, j'ai abordé l'importation d'un module que j'ai créé. À partir de maintenant, l'importation de modules apparaîtra certainement comme une évidence lors de la création de programmes liés à l'IA et à l'IoT. Je n'ai pas encore abordé le chargement de modules externes et de bibliothèques (décrits plus tard), mais je les chargerai dans le même format d'importation, alors maintenons-le enfoncé pour l'avenir.

Revenir à [Lien de la table des matières]