[Introduction à Python] Quel est l'important "if __name__ == '__ main__':" lorsqu'il s'agit de modules?

Site de référence: [Introduction à Python] Quel est l'important "if name == '__ main__':" lorsqu'il s'agit de modules?

[Introduction à Python] Quel est l'important "if name == '__ main__':" lorsqu'il s'agit de modules?

Lorsque j'étudie Python et que je regarde des exemples de programmes, je vois souvent la phrase "if name == '__ main__':". Main est indispensable pour écrire des programmes dans d'autres langages de programmation tels que C et Java, mais dans le cas de Python, main n'est généralement pas utilisé lors du codage.

Cependant, cette phrase joue un rôle important dans le travail avec des modules en Python. Cette fois, je vais expliquer ce que signifie "si nom == '__ main__':".

Qu'est-ce qu'un module?

Le code Python peut être enregistré en tant que fichier de script et réutilisé par d'autres programmes. Ce fichier s'appelle un module. "Importer" est utilisé lors du chargement d'une bibliothèque standard en Python, mais en chargeant un module que vous avez créé à l'aide de l'importation, vous pouvez également utiliser les fonctions et les classes définies dans ce module dans d'autres programmes.

if name == Signification de «main»:

Quel est le nom__?

Maintenant que vous savez ce que signifie le module, parlons de la variable "name". À titre d'exemple, supposons que vous ayez le programme test.py suivant.

test.py
def test():
    print('Hello World!')
    
if __name__ == '__main__':
    test()

Le résultat de l'exécution de ce programme est le suivant.

Hello World!

Dans cet exemple, nous venons de définir une fonction appelée test qui affiche "Hello World!". Je n'ai déclaré nulle part la variable "name". Néanmoins, le fait que test () soit exécuté signifie que l'instruction if renvoie True. Que veut dire ceci exactement?

Regardons d'abord cette variable appelée "name". En fait, cette variable name est créée automatiquement lorsque vous chargez un script Python sur une imprimante Python. De plus, le nom du module du script en cours d'exécution lui est automatiquement attribué.

if name == Signification de «main»:

J'ai trouvé qu'une variable appelée name était créée automatiquement et que le nom du module du script en cours d'exécution était automatiquement attribué. Cependant, je ne me souviens pas d'avoir créé un module appelé main. D'où vient ce main?

En fait, lorsque vous exécutez directement un script Python, le fichier de script est reconnu comme un module nommé «main». Par conséquent, si vous exécutez directement le fichier de script, la valeur main sera automatiquement affectée à la variable name.

En d'autres termes, la signification de "if name == '__ main__':" était "exécutée uniquement lorsqu'elle est exécutée directement, et non exécutée autrement". Dans l'exemple précédent, nous avons exécuté test.py directement, donc l'instruction if a renvoyé True et test () a été exécuté.

En guise de test, j'ai ajouté un processus pour afficher le nom du module exécuté dans test.py.

def test():
    print('Hello World!')
    
if __name__ == '__main__':
    test()
    
print('Nom du module:{}'.format(__name__))  #Afficher le nom du module exécuté

Si vous faites cela, vous obtiendrez les résultats suivants:

Hello World! Nom du module: main

Lorsque vous exécutez directement le fichier de script, vous pouvez voir que le nom du module est "main".

Alors, que signifie «sauf lorsque exécuté directement»? C'est à ce moment que ce fichier de script est lu en tant que module à partir d'un autre programme. J'ai créé test2.py qui importe test.py en tant que module.

test2.py
import test  #test.Importer py

Résultat d'exécution

Nom du module: test

Si vous importez et exécutez test.py, vous verrez que le nom du module est "test". Autrement dit, test.py est exécuté en tant que module de test, donc name se voit attribuer "test". Par conséquent, "if name == '__ main__':" renvoie False, donc test () n'a pas été exécuté.

"If name == '__ main__':" est utilisé pour tester lors de la création d'un module, ou lorsque vous n'avez pas l'intention de modulariser pour le moment mais que vous voulez éviter les traitements inutiles lors de la modularisation. Vous ne pensez peut-être pas à la modularisation ou à la réutilisation pendant que vous créez un programme par vous-même, mais c'est une idée essentielle lorsque vous créez un programme à grande échelle. Souvenons-nous-en.

Recommended Posts

[Introduction à Python] Quel est l'important "if __name__ == '__ main__':" lorsqu'il s'agit de modules?
[Introduction à Python] Quelle est la méthode de répétition avec l'instruction continue?
[Introduction à Python] Qu'est-ce que Python, le langage de programmation le plus puissant actuellement?
Que faire lorsque le type de valeur est ambigu en Python?
[Introduction à Python] Quelle est la différence entre une liste et un taple?
Que faire si le serveur ne démarre pas avec python manage.py runserver
Qu'est-ce qu'un algorithme? Introduction à l'algorithme de recherche] ~ Python ~
Introduction à Python avec Atom (en route)
[Introduction à l'application Udemy Python3 +] 54. Qu'est-ce que Docstrings?
Que faire si vous obtenez un avertissement "Mauvaise plateforme Python" lors de l'utilisation de Python avec l'EDI NetBeans
Que faire si vous obtenez une erreur lors de l'installation de python avec pyenv
[Introduction à Python] Comment itérer avec la fonction range?
[Python] Que faire quand Aucun module nommé "pyproj.datadir" n'apparaît lors de la création d'Exe avec PyInstaller
[Introduction à Python] Quelle est la méthode d'installation recommandée du système de gestion de paquets pip?
Que faire si la barre de progression n'est pas affichée dans tqdm de python
Python "if __name__ ==‘ __main__ ’:" signifie
[Python] si __name__ == Qu'est-ce que «__ main__»:?
Je veux initialiser si la valeur est vide (python)
Ce que j'ai fait pour accueillir le Python2 EOL en toute confiance
Essayez de déchiffrer les caractères déformés dans le nom du fichier joint avec Python
[Introduction à Python] Comment obtenir des données avec la fonction listdir
[Python] Qu'est-ce qu'une instruction with?
Comment ne pas échapper au japonais en traitant avec JSON en Python
[Introduction à Python] Comment fractionner une chaîne de caractères avec la fonction split
[Python] Qu'est-ce que @? (À propos des décorateurs)
Comment gérer le problème du déplacement du répertoire actuel lorsque Python est exécuté depuis Atom
[python] Quelle est la clé triée?
[Python] Qu'est-ce que pip? Expliquez la liste des commandes et comment l'utiliser avec des exemples réels
Que faire avec la sortie de PYTHON?
Que faire si un avertissement de plate-forme non sécurisée apparaît lors de l'exécution de Python
Que faire lorsque l'inode est épuisé sur EC2 Linux
Que faire lorsqu'une partie de l'image d'arrière-plan devient transparente lorsque l'image transparente est combinée avec Oreiller
À quoi sert le trait de soulignement Python (_)?
De l'introduction de JUMAN ++ à l'analyse morphologique du japonais avec Python
Comment utiliser Python avec Jw_cad (Partie 1 Qu'est-ce que la transformation externe)
Que faire si le nom d'utilisateur est modifié et que le chemin de la bibliothèque pyenv ne passe pas
[Python] Que faire en cas de violation de PEP8 lors du processus d'importation à partir du répertoire ajouté à sys.path
Comment écrire quoi faire lorsque l'application est affichée pour la première fois dans Qt pour Python avec Designer
FBX SDK De quelles compétences ai-je besoin pour créer un programme à l'aide de Python?
[PostgreSQL] Comment accorder une autorité de superutilisateur lorsque le nombre d'utilisateurs (rôles) avec l'autorité de superutilisateur est de 0.
Que faire s'il y a un décimal dans python json .dumps
[Python] Qu'est-ce qu'un argument formel? Comment définir la valeur initiale
Que faire lorsque le résultat téléchargé via scrapy est en anglais
Que faire si l'environnement Pipenv est corrompu en mettant à jour Homebrew
[Introduction à Udemy Python3 + Application] 47. Traitez le dictionnaire avec une instruction for
Que faire si ipython et python démarrent avec des versions différentes
[Introduction à Python] Comment trier efficacement le contenu d'une liste avec le tri par liste
Que faire si le mnist d'exemple Chainer (Windows) se termine par WinError 183.
Que faire si une erreur se produit lors de l'importation de numpy avec VScode
[Introduction à Python] Comment écrire une chaîne de caractères avec la fonction format
Que faire lorsque l'avertissement "L'environnement est cohérent ..." apparaît dans l'environnement Anaconda
python Comment notifier automatiquement par téléphone lorsque le système tombe en panne
[Introduction à l'application Udemy Python3 +] 33. instruction if
Introduction au remplissage d'image Python Remplissage d'image à l'aide d'ImageDataGenerator
[Introduction à Python] Utilisons foreach avec Python
Qu'est-ce que "mahjong" dans la bibliothèque Python? ??
La route de la compilation vers Python 3 avec Thrift
Que faire si vous obtenez l'erreur RuntimeError: Python n'est pas installé en tant que framework lorsque vous essayez d'utiliser matplitlib et pylab dans Python 3.3