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 :
- Si vous lancez le fichier directement (
python main.py),__name__vaut"__main__". - Si le fichier est importé par un autre module (comme dans vos tests),
__name__vaut le nom du module ("main").
# 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'