7.3 Code de premier niveau
Objectifs d'apprentissage
À la fin de cette section, vous devriez être en mesure de :
- Identifier le code qui s'exécute en tant qu'effet secondaire de l'importation.
- Expliquer l'utilité de
if __name__ == "__main__".
Effets secondaires
Les modules définissent des fonctions et des constantes destinées à être utilisées dans d'autres programmes. Lors de l'importation d'un module, tout le code du module est exécuté de haut en bas. Si un module n'est pas conçu avec soin, du code non désiré peut s'exécuter en tant qu'effet secondaire. Ce code involontaire se trouve généralement au premier niveau, en dehors des définitions de fonctions.
Concepts en pratique
Effets secondaires
Utiliser __name__
Les modules Python incluent souvent l'instruction if __name__ == "__main__" pour éviter les effets secondaires. Cette instruction est vraie lorsque le module est exécuté en tant que programme et fausse lorsque le module est importé.
Concepts en pratique
Utiliser __name__
Pour aller plus loin
Les variables qui commencent et se terminent par un double tiret bas ont une signification particulière en Python. Ces doubles tirets bas sont familièrement appelés variables « dunder » ou « magiques ». D'autres exemples incluent __doc__ (la docstring du module) et __file__ (le nom de fichier du module).
À vous d'essayer
Effets secondaires
Cet exercice fait suite à l'exercice « Imports manquants ». Précédemment, vous avez ajouté les instructions import manquantes au début du programme. Maintenant, modifiez le programme pour éviter les effets secondaires lors de l'importation du programme en tant que module :
- Ajoutez
if __name__ == "__main__"à la fin. - Déplacez tout le code de test sous cette instruction
if.
Le programme doit s'exécuter sans erreur et produire la même sortie qu'auparavant.
À vous d'essayer
Test de conversion
Cet exercice fait suite à l'exercice « Module de conversion ». Précédemment, vous avez écrit les fonctions cel2fah, fah2cel, km2mi et mi2km. Écrivez du code de test à la fin de conversion.py (le fichier d'origine) pour chacune de ces fonctions. Le code de test ne doit pas s'exécuter en tant qu'effet secondaire lorsque conversion est importé par d'autres programmes. Lors de l'exécution de conversion.py en tant que programme principal, la sortie du test doit être :
0 C is 32 F
5 C is 41 F
10 C is 50 F
15 C is 59 F
20 C is 68 F
20 F is -7 C
25 F is -4 C
30 F is -1 C
35 F is 2 C
40 F is 4 C
1 km is 0.6 mi
2 km is 1.2 mi
3 km is 1.9 mi
4 km is 2.5 mi
5 km is 3.1 mi
5 mi is 8.0 km
6 mi is 9.7 km
7 mi is 11.3 km
8 mi is 12.9 km
9 mi is 14.5 km