Maison >développement back-end >Tutoriel Python >Comment puis-je empêcher l'exécution indésirable de code lors de l'importation de modules en Python ?

Comment puis-je empêcher l'exécution indésirable de code lors de l'importation de modules en Python ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-13 18:34:10973parcourir

How Can I Prevent Unwanted Code Execution When Importing Modules in Python?

Le mystère de l'exécution des modules de Python

Dans la programmation Python, il est possible de rencontrer un comportement inattendu lors de l'importation de modules. Considérons un programme qui propose deux modes de fonctionnement : le mode interactif avec l'utilisateur via main.py et le mode batch via batch.py.

Le problème survient lorsque batch.py ​​importe main.py mais déclenche accidentellement l'exécution de son code. Cela se produit parce que Python traite les mots-clés comme class et def comme des instructions exécutables plutôt que comme des déclarations.

Solution : exécution conditionnelle

Pour éviter cette exécution indésirable, Python propose une solution connue comme exécution conditionnelle. Cela implique d'encapsuler le code destiné à s'exécuter uniquement lorsque le module est appelé directement, et non importé.

L'extrait suivant illustre cette approche :

# Code that can be executed both when called directly and imported
...

# Code to be executed only when called directly
def main():
    ...

# Conditional execution to only run 'main' when the module is called directly
if __name__ == "__main__":
    main()

Dans ce modèle, tout code placé en dehors du if __name__ == "__main__" le bloc sera exécuté, que le module soit importé ou appelé directement. Le code de ce bloc ne sera exécuté que lorsque le module est appelé directement, empêchant ainsi toute exécution indésirable lors des importations.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn