Comprendre la fonction main() de Python : Guide pratique pour def main()
Qu'est-ce que la fonction main de Python ?
La fonction main en Python marque le point d'entrée d'un programme. Quand un script est exécuté directement, l'interpréteur exécute le code séquentiellement. Le code à l'intérieur de def main() ne s'exécute que si le script est le module principal, pas quand il est importé ailleurs.
Examinons un exemple clair.
Exemple 1 : Définir main()
def main():
print("Hello World!")
print("Guru99")
L'exécution de ce fichier affiche seulement Guru99. La ligne Hello World! reste dans main() et n'est jamais appelée.
Pour exécuter main() quand le script s'exécute comme programme principal, vous devez le protéger avec :
if __name__ == "__main__":
main()
Maintenant le script se comporte comme prévu.
Exemple 2 : Protection correcte
def main():
print("Hello World!")
if __name__ == "__main__":
main()
print("Guru99")
Quand vous exécutez ce fichier, la console affiche :
Hello World!
Guru99
Pourquoi cela fonctionne ? L'interpréteur définit la variable spéciale __name__ à "__main__" quand un fichier est exécuté directement. La protection vérifie cette condition avant d'appeler main().
Le rôle de __name__ et les modules
Comprendre __name__ est essentiel pour écrire du code réutilisable.
def main():
print("hello world!")
if __name__ == "__main__":
main()
print("Guru99")
print("Valeur dans la variable intégrée name est : ", __name__)
L'exécution directe du fichier affiche les deux messages et __name__ comme "__main__". Si vous importez ce script comme module :
import mainfunction
print("fini")
vous verrez seulement fini et __name__ reflétera le nom du module, donc main() ne s'exécute pas automatiquement.
En résumé :
- Exécution directe :
__name__ == "__main__"→main()s'exécute. - Import comme module :
__name__ != "__main__"→main()est ignoré.
Python 3 n'exige pas if __name__ == "__main__": pour les scripts simples, mais utiliser la protection est une bonne pratique, surtout quand le fichier peut être réutilisé. En Python 2, la syntaxe reste la même, mais les instructions print diffèrent :
def main():
print "Hello World!"
if __name__ == "__main__":
main()
print "Guru99"
En Python 3, vous pouvez aussi écrire :
def main():
print("Hello World!")
main()
print("Guru99")
Rappelez-vous : maintenez toujours une indentation correcte après la ligne def main(): pour éviter les erreurs.
Python
- Fonctions lambda en Python : Guide pratique des fonctions anonymes
- Générateurs Python : itération efficace et cas d'utilisation avancés
- Les fermetures Python expliquées : comment les fonctions imbriquées capturent les variables
- Maîtriser les décorateurs Python : améliorer les fonctions avec des techniques expertes
- Maîtriser la méthode strip() de Python : Guide complet et exemples pratiques
- Python len() : Guide pratique pour mesurer la longueur des objets
- Maîtriser la méthode String.find() de Python : Syntaxe, Exemples et Alternatives
- Maîtriser les fonctions lambda Python : exemples pratiques et bonnes pratiques
- Fonction Python round() expliquée avec exemples pratiques