Python multiligne if condition

Neema Muganga 10 octobre 2023
Python multiligne if condition

Les conditions multilignes dans une instruction if en Python ont été fournies de diverses manières autorisées dans PEP8.

Pour commencer, les déclarations de conditions multiples ne doivent pas être placées sur une seule ligne. Au lieu de cela, divisez cette seule ligne des multiples conditions et placez-les entre parenthèses.

# do not define the multiple conditions in a single line like this
if (
    firstcondition == "something"
    and secondcondition == "something else"
    and thirdcondition == "something different"
):
    # something_to_be_done
    pass

Guides PEP8 sur l’utilisation des lignes de continuation pour séparer les déclarations de condition multilignes. Ces lignes doivent être alignées verticalement et espacées d’un retrait de quatre espaces à partir du début de la nouvelle ligne. La parenthèse fermante et les deux points indiquent clairement la fin de la condition.

Apparemment, Python a un moyen automatique de créer une indentation à quatre espaces chaque fois que vous combinez un mot-clé à deux caractères comme if, un seul espace et une parenthèse ouvrante. Par conséquent, il n’est pas nécessaire d’ajouter une indentation supplémentaire dans la rupture de condition.

Exemple de code :

if (this_matches_condition, this_also_matches_condition):  # end of conditions
    get_something_done()

Si vous stylisez les multiples conditions comme ci-dessus, il y a l’avantage d’une lisibilité facile du code. Cela donne également aux conditions complexes une expression plus claire.

Dans un scénario où des mots-clés d’opérateur logique comme and et or sont inclus dans les conditions, il est fortement conseillé, selon le guide PEP8, de placer l’opérateur logique (and, or) avant les lignes de condition de continuation. Ce style est appelé le style de Knuth. Il améliore la lisibilité des conditions grâce à l’indentation automatique à quatre espaces définie par Python, pour aligner verticalement toutes les conditions.

Cela rend également les conditions plus visibles entre parenthèses et apporte l’avantage de l’évaluation en court-circuit.

Exemple:

if sttmt1 and (sttmt2 or sttmt3) or name == "Goodman":

    something_happens

Une autre façon de styliser ces instructions de condition multilignes consiste à définir une variable et à lui affecter ces expressions de condition. Cependant, cette méthode n’est pas entièrement encouragée car elle tend à limiter le refactoring ultérieur. Cependant, le code semblera plus clair si une variable est utilisée, et il fournit également une meilleure compréhension du flux de contrôle du programme.

condition_list = (
    condition_one == "number1"
    and condition_two == "number2"
    and condition_three == "number3"
)

if conditions_list:
    # implement_something
    pass

else:
    # something_else _is _done
    pass

L’instruction if dans le code ci-dessus garantit que quelque chose est implémenté si et seulement si l’intégralité de la condition_list est vraie. Sinon, quelque chose d’autre est implémenté quand même une des conditions de la condition_list est fausse.

Vous pouvez placer une paire de parenthèses supplémentaires autour des conditions pour afficher visiblement les expressions de condition.

if sttmt1 and (sttmt2 or sttmt3) or name == "Goodman":
    something_happens

Article connexe - Python Statement