Maison > Article > développement back-end > Pourquoi n'y a-t-il pas de fonction main() en Python ?
Dans cet article, nous comprendrons pourquoi il n'y a pas de fonction main() en Python.
Il ne fait aucun doute que Python n'a pas de soi-disant fonction principale, mais, en ce qui concerne Des citations telles que « Fonctions primaires de Python » et « Suggestions pour l'écriture Fonctions principales. "
Leur intention est peut-être de reproduire l'approche principale originale, mais de nombreux Soyez induit en erreur (ou incompris) et créez ainsi un code extrêmement complexe.
Avant de commencer, nous répondrons aux deux questions suivantes -
Quelle est exactement la « fonction principale » ?
Pourquoi certains langages de programmation doivent-ils utiliser la fonction main ?
Certains langages de programmation, tels que C/C++, C#, Java, Go, Rust, etc., utilisent La fonction principale, en tant qu'entrée d'exécution du programme, a une signification spécifique -
Ce nom de fonction principale est obligatoire, ce qui signifie qu'il doit y avoir une fonction principale Fonction.
Comme il ne peut y avoir qu'une seule fonction principale, chaque entrée du programme est unique.
Le format de syntaxe a des exigences spécifiques et suit un format très cohérent (fixe) modèle.
Ce sont des langages compilés et nécessitent que le code soit compilé dans un fichier exécutable binaires du système d'exploitation/du chargeur de démarrage pour trouver le démarrage du programme, afin que vous puissiez Cette fonction doit être définie.
En termes simples, il y a un début important qui doit être défini dans une grande quantité de contenu Code exécutable.
Les fonctionnalités principales sont les fonctionnalités organiques de base de ces langages.
Mais lorsque nous revenons à Python, les choses changent radicalement.
Python est un langage interprété, également appelé langage de script. ce Le processus en cours s'exécute de haut en bas, ligne par ligne, ce qui signifie que son Le point de départ est connu.
Chaque .py fichier est un fichier exécutable qui peut être utilisé comme point d'entrée d'un programme, signifie que le point d'entrée du programme est flexible et ne doit pas suivre une convention Je suis déjà à la suite.
Lors de l'exécution d'un projet Python sans spécifier de fichier d'entrée (plus Une ligne de commande typique telle que "python -m http.server 8000"), probablement due à Il existe un fichier main.py qui fait ce qui suit en tant que "fichier" dans le package fonctionner.
Pour résumer, le langage de script Python est différent du langage compilé. ça peut Sélectionner des techniques d'exécution flexibles au niveau des modules individuels (c'est-à-dire des fichiers .py), ou au niveau d'un package composé de nombreux modules, contrairement à d'autres langages qui ne peuvent pas Ceci peut être réalisé sans entrées clairement définies.
En d'autres termes, Python n'oblige pas les programmeurs à spécifier une entrée unifiée (soit C'est un niveau de syntaxe fonction, classe ou autre).
Certains utilisateurs peuvent être confus car ils rencontrent ou écrivent souvent le code suivant -
# defining the main function using the def keyword def main(): …… if __name__ == '__main__': main()
N'est-ce pas la fonction principale de Python ? Je crois que beaucoup de gens sont d'accord ! -
Non, ce n'est pas le cas.
Sauf que le nom de la fonction est "main", il n'a aucun lien avec la fonction principale orthodoxe La fonction que nous avons décrite plus tôt n'est pas obligatoire et ne contrôle pas nécessairement la commande exécution du programme. Sans cela, cela ne posera aucun problème de syntaxe.
Certaines personnes souhaitent identifier une fonction "main" pour souligner son statut "principal" et Faites-en la première fonction à être exécutée manuellement.
Ils peuvent penser que les fonctions portant de tels noms sont plus faciles à retenir.
Ils voudront peut-être écrire if name =='main' pour prouver que main() ne s'exécute que si Le script actuel est exécuté directement et ne doit pas être exécuté lors de l'importation. d'autres modules.
Cependant, nous déconseillons ce style d’écriture.
L'exemple le plus courant : seulement quelques dizaines de lignes de code ou un fichier script Implémentation d'une fonction simple (un petit robot, utiliser une tortue pour dessiner une image, etc.), Mais ils sont tous écrits de la même manière qu’avant.
Pour les raisons suivantes, il n'est pas recommandé d'écrire si name__ == '__main' -
Tout d’abord, si vous n’avez qu’un seul fichier car il n’y a pas d’option d’exportation.
2. S'il y a plusieurs fichiers, écrivez cette phrase dans le fichier d'entrée (main.py) Fortement déconseillé. Puisqu'il s'agit du point de départ, son contenu ne doit pas être exporté pour être utilisé dans d’autres modules.
Enfin, il n'est pas possible d'écrire ce jugement dans un dossier de non-inscription comportant de nombreux dossiers. Recommandé, car tout ce que vous pouvez faire est de créer certains de ces tests programme. Cependant, le code de test doit être séparé et stocké dans un répertoire séparé. Répertoire ou fichier.
Chaque fois que je rencontre un code aussi complexe, je m'inquiète sans réfléchir. Pourquoi Avez-vous écrit la déclaration if ? Si possible, séparez la fonction principale, ne le faites même pas Enveloppez-le dans une fonction !
Débarrassez-vous de la pensée inertielle et créez du vrai code. Fonction d'entrée principale Est spécifique à certains langages et ne doit pas être utilisé en Python. tu devrais Comprendre les caractéristiques des langages de script et écrire dans un langage simple et compréhensible Style attrayant.
Utilisez main.py au lieu de main(). Parce que l'unité d'exécution de programme de Python est Fichiers de script au lieu de fonctions ou de classes, le fichier d'entrée doit être nommé main.py, La fonctionnalité interne est déterminée par les exigences.
Si possible, utilisez main.py comme fichier d'entrée. Ce fichier est très simple à constituer et à utiliser Utilisez le paramètre "-m" sur la ligne de commande.
Dans cet article, nous avons appris pourquoi Python, contrairement à d'autres langages de programmation, manque Fonction principale. Nous avons également découvert la condition __name__ == '__main__'.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!