Les modules Python sont des objets et ils ont de nombreux attributs utiles. C'est un aspect que vous pouvez utiliser pour tester facilement
vos modules au cours de leur écriture. Voici un exemple qui utilise l'astuce if __name__.
Quelques remarques avant de passer aux choses sérieuses. Premièrement, les parenthèses ne sont pas obligatoires autour de
l'expression if. Ensuite, l'instruction if se termine par deux points et est suivie de code indenté.
 |
| A l'instar de C, Python utilise == pour la comparaison et = pour l'assignement. Mais au contraire de C, Python ne permet pas les assignations dans le corps d'une instruction afin d'éviter qu'une valeur soit accidentellement assignée
alors que vous pensiez effectuer une simple comparaison.
|
En quoi cette instruction if est-elle une
astuce ? Les modules sont des objets et tous les modules disposent de
l'attribut prédéfini __name__. Le
__name__ d'un module dépend de la façon dont vous
l'utilisez. Si vous importez le module, son
__name__ est le nom de fichier du module sans le
chemin d'accès ni le suffixe. Mais vous pouvez aussi lancer le module
directement en tant que programme, dans ce cas
__name__ va prendre par défaut une valeur spéciale,
__main__.
Sachant cela, vous pouvez concevoir une suite de tests pour votre
module au sein même de ce dernier en la plaçant dans ce
if. Quand vous lancez le module directement,
__name__ est __main__ et la
séquence de tests s'exécute. Quand vous importez le module,
__name__ est autre chose et les tests sont ignorés.
Cela facilite le développement et le déboguage de nouveaux modules avant
leur intégration dans un programme plus grand.
 |
| Avec MacPython, il y a une étape
supplémentaire pour que l'astuce if
__name__ fonctionne. Ouvrez le menu des options des
modules en cliquant le triangle noir dans le coin supérieur droit de
la fenêtre et assurez-vous que est coché.
|
Pour en savoir plus sur l'importation des modules