1.4 Variables, Types et __name__

Vous utilisez if __name__ == "__main__" dans votre projet depuis le début. Il est temps de comprendre pourquoi.

1. La variable __name__

Python peuple automatiquement __name__ selon le contexte d'exécution :

# Dans main.py
print(__name__)

# Lancé via : python main.py   → affiche : __main__
# Importé via : from main import load_scan_file → affiche : main

C'est pourquoi la dernière ligne de pyCycloneFlow est indispensable :

if __name__ == "__main__":
    main()  # Ne s'exécute PAS quand les tests importent main.py
Règle : Tout code "programme principal" doit être protégé par ce garde-fou. Sinon, importer votre module déclenchera l'exécution du code — ce qui casse les tests.

2. Les types de base

Python est dynamiquement typé : la variable prend le type de la valeur qu'on lui assigne. type() permet de le vérifier.

nom      = "Neo"         # str
version  = 3.10          # float
actif    = True          # bool
compteur = 0             # int
rien     = None          # NoneType

print(type(nom))         # <class 'str'>
print(type(version))     # <class 'float'>
En Python, une chaîne vide "", 0, None et False sont tous évalués à False dans un if.

3. Le transtypage

Convertir explicitement d'un type à l'autre avec les fonctions intégrées.

version_str = "3"
version_int = int(version_str)   # 3
version_flt = float(version_str) # 3.0
retour_str  = str(version_int)   # "3"
est_vide    = bool("")           # False
À vous — vrai ou faux ?
print(bool(""))
print(bool("Neo"))
print(bool(0))
print(int("42"))
print(str(99))
print(bool(""))    # False  — chaîne vide = falsy
print(bool("Neo")) # True   — toute chaîne non vide = truthy
print(bool(0))     # False  — zéro = falsy
print(int("42"))   # 42
print(str(99))     # '99'
Chapitre précédent Chapitre suivant : safe opener