HOWTO · Python
Python multiligne if condition
Condition if multiligne en Python
Sur cette page
Pour répartir une longue condition if sur plusieurs lignes en Python, entourez l’expression de parenthèses. Python autorise alors la continuation implicite de ligne, vous n’avez donc pas besoin d’une barre oblique inverse à la fin de chaque ligne. L’indentation de continuation est choisie pour la lisibilité ; Python n’ajoute pas automatiquement quatre espaces pour vous. Gardez le corps de l’instruction indenté sous le if comme d’habitude.
Utiliser des parenthèses pour diviser une longue condition if
Les parenthèses sont le choix par défaut le plus clair pour une condition qui ne tient pas confortablement sur une ligne. Elles vous permettent de couper l’expression à des endroits significatifs et de garder la parenthèse fermante à côté des deux-points. Choisissez une indentation de continuation qui rend l’expression facile à parcourir, et utilisez le même motif de manière constante dans un fichier.
Placer les opérateurs booléens avant les lignes de continuation
PEP 8 recommande de couper avant un opérateur binaire, ce qui laisse and ou or au début de la ligne de continuation suivante. Cela rend chaque vérification supplémentaire facile à repérer. Le placement est un choix de mise en forme : les parenthèses et les sauts de ligne ne changent pas la façon dont Python regroupe les expressions ni la façon dont and et or court-circuitent. Voir le guide PEP 8 sur les instructions if multilignes.
Voici un exemple compact avec trois vérifications. Le corps appartient au if ; l’indentation à l’intérieur des parenthèses aide les lecteurs à parcourir l’expression.
plan = {"active": True, "paid": True, "seats": 4}
if (
plan["active"]
and plan["paid"]
and plan["seats"] >= 3
):
print("Eligible for the team plan.")
else:
print("Choose another plan.")
Avec les valeurs montrées, les trois vérifications sont vraies, le programme affiche donc :
Eligible for the team plan.
Pour une logique mixte, utilisez des parenthèses pour rendre le regroupement visé visible, comme (is_member or has_invitation) and account_is_active. Si une vérification antérieure doit en protéger une ultérieure, conservez cet ordre : and et or évaluent de gauche à droite avec un comportement de court-circuit. La mise en forme seule ne rend pas un regroupement différent équivalent.
N’utiliser les barres obliques inverses que lorsque c’est nécessaire
Une barre oblique inverse peut continuer explicitement une instruction, mais elle est plus fragile que les parenthèses. Le marqueur doit être le dernier caractère de sa ligne physique ; des espaces de fin ou des modifications ultérieures après lui peuvent rompre la continuation. Par exemple, une ligne peut se terminer par if account_is_active and \ avant la condition suivante. Préférez les parenthèses pour une longue condition, car elles évitent cette dépendance à la fin de ligne et permettent une indentation naturelle. Réservez les barres obliques inverses aux cas où la syntaxe environnante ne fournit pas de contexte de continuation implicite.
Nommer une condition lorsqu’elle améliore la clarté
Lorsqu’une condition a une signification utile propre ou est réutilisée, attribuez-la à un nom descriptif comme eligible_for_team_plan, puis écrivez if eligible_for_team_plan:. Cela donne à l’instruction if un test concis et significatif et peut rendre le flux de contrôle environnant plus facile à lire. Gardez le nom cohérent partout où il est attribué et utilisé.
Une variable nommée est un choix de style, pas une règle contre la refactorisation. Pour une expression courte utilisée une seule fois, garder la condition entre parenthèses à côté du if peut être plus clair ; pour une règle plus longue ou réutilisée, un nom peut mieux communiquer l’intention. Suivez les conventions du projet et choisissez la forme qui rend la décision la plus facile à comprendre pour un autre développeur.