HOWTO · Python
Ne rien faire dans une instruction if en Python
Découvrez comment utiliser `pass` comme instruction sans effet dans une branche conditionnelle qui ne doit effectuer aucune action, tout en gardant le bloc syntaxiquement valide.
Sur cette page
Après un en-tête if, elif ou else, Python exige une instruction indentée. Si une branche ne doit encore effectuer aucune action, l’instruction pass permet de la laisser sans action tout en gardant le bloc syntaxiquement valide. Elle sert de repère provisoire délibéré, mais ne saute pas la condition et ne définit aucun comportement à votre place.
Ce que fait pass dans un bloc if
pass est une instruction sans effet : lorsque Python l’exécute, elle ne fait rien. L’exécution se poursuit ensuite selon le flux de contrôle environnant. Dans une branche if, Python reprend après le bloc conditionnel lorsque cette branche est terminée ; dans le corps d’une boucle, il peut commencer l’itération suivante au lieu de sortir de la boucle. La condition reste évaluée normalement.
Un bloc ne peut pas rester vide. Par exemple, écrire if ready: puis placer immédiatement une autre instruction au même niveau d’indentation ne permet pas de laisser la branche vide : ce n’est pas valide. Insérez pass dans la branche lorsqu’elle ne doit délibérément effectuer aucune action. La même règle s’applique aux autres instructions composées, comme les boucles, les fonctions et les définitions de classes : leur bloc doit contenir une instruction, et pass peut remplir ce rôle.
Utiliser pass dans une branche conditionnelle
Une branche qui contient pass reste intégrée à la condition. Python évalue la condition, entre dans la branche correspondante, puis reprend après le bloc conditionnel une fois cette branche terminée. Une branche elif est examinée lorsque les conditions précédentes sont fausses, et sa propre condition doit être vraie pour qu’elle soit sélectionnée. Une branche else n’a pas de condition : elle s’exécute uniquement lorsque toutes les conditions if et elif précédentes sont fausses. pass ne déclenche pas l’exécution d’une autre branche.
Exécutez cet exemple :
Le code et les libellés ou sorties affichés dans cette section restent en anglais.
x = 10
if x > 5:
pass
else:
print("x is not greater than 5")
print("Continue with the rest of the program")
Continue with the rest of the program
Avec x défini à 10, la condition est vraie : Python entre donc dans la première branche et exécute pass. Le corps de else est ignoré, puis le dernier print s’exécute. L’exécution fournie s’est terminée avec succès, avec le code de sortie 0, et a affiché le résultat montré ci-dessus. Si vous remplacez x par 5 ou une valeur inférieure, le corps de else s’exécute avant la dernière instruction.
Comprendre le résultat de l’exemple
L’exemple utilise pass uniquement dans la branche où x > 5. Cette branche n’affiche rien, mais elle n’arrête pas non plus le programme. L’instruction print suivante se trouve après le bloc conditionnel : elle est donc atteinte une fois l’une ou l’autre branche terminée. Lorsque x vaut 5 ou moins, la branche else affiche son message avant cette instruction.
Cette distinction est importante pour comprendre le résultat : une instruction sans effet dans une branche ne supprime pas les instructions qui suivent le bloc conditionnel. De même, une branche dont la condition ne correspond pas n’est tout simplement pas sélectionnée. Pour modifier ce que le programme affiche, ajoutez l’opération voulue dans la branche appropriée au lieu d’attendre de pass qu’elle modifie la condition ou agisse sur d’autres instructions.
Quand utiliser pass et quand choisir une autre instruction
Utilisez pass lorsqu’une branche doit exister, mais que son implémentation est volontairement reportée, par exemple pendant l’ébauche d’une fonction ou lorsque vous déterminez comment traiter une entrée particulière. Remplacez ce repère provisoire par un comportement concret dès que vous savez ce que la branche doit faire. D’ici là, elle ne fait rien : les noms environnants ou un bref commentaire devraient permettre au lecteur de comprendre pourquoi elle est présente.
pass ne permet pas de désactiver temporairement du code fonctionnel pendant des tests ou le débogage. Cette instruction ne conserve pas les instructions désactivées et ne fait pas comme si la condition de la branche était fausse. Pour contrôler l’exécution pendant le débogage, utilisez une condition délibérée ou un débogueur ; pour conserver temporairement du code, faites une modification adaptée dans le contrôle de version ou commentez-le avec prudence.
Choisissez une autre instruction lorsque le programme doit effectuer une véritable action. Utilisez return pour quitter une fonction en renvoyant un résultat (ou explicitement aucune valeur), continue pour passer à l’itération suivante d’une boucle, ou break pour sortir d’une boucle. Ces instructions modifient le flux de contrôle ; pass ne le modifie pas. Si aucune action propre à la branche n’est nécessaire, demandez-vous si vous pouvez simplifier la condition au lieu de conserver une branche vide.