Python Multi-Line if Condition

Neema Muganga Jan 17, 2023 Oct 17, 2021
Python Multi-Line if Condition

Multi-line conditions in an if statement in Python have been provided with various allowable ways in PEP8.

For starters, the multiple condition statements should not be placed in a single line. Instead, split this single line of the multiple conditions and wrap them in parentheses.

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

PEP8 guides on the use of continuation lines to separate the multi-line condition statements. These lines should be vertically aligned and spaced with a four-space indentation from the beginning of the new line. The closing parenthesis and the colon clearly show the end of the condition.

Apparently, Python has an automatic way of creating a four-space indentation whenever you combine a two-character keyword like if, a single space, and an opening parenthesis. Therefore, there is no need to add extra indentation in the condition break.

Example code:

if (this_matches_condition,
   ):# end of conditions

If you style the multiple conditions like above, there is an advantage of easy readability of code. It also makes the complex conditions have a cleaner expression.

In a scenario where logic operator keywords like and and or are included in the conditions, it is highly advisable, according to the PEP8 guide, to place the logic operator(and, or) before the continuation condition lines. This style is referred to as Knuth’s style. It enhances the readability of the conditions due to the automatic four-space indentation set by Python, to make all conditions vertically line up.

It also makes the conditions more visible within the parenthesis and brings along the advantage of short-circuit evaluation.


if (
    and (sttmt2 or sttmt3)
    or name == 'Goodman'


An alternative way to style these multi-line condition statements is by defining a variable and assigning these condition expressions to it. However, this method is not entirely encouraged because it tends to limit subsequent refactoring. However, the code will look clearer if a variable is used, and it also provides a better understanding of the program control flow.

condition_list= (
    condition_one == 'number1'
    and condition_two == 'number2'
    and condition_three == 'number3'

if conditions_list:

    something_else _is _done

The if statement in the above code ensures that something is implemented if and only if the entire condition_list is true. Otherwise, something else is implemented when even one of the conditions in the condition_list is false.

You can wrap an extra pair of parentheses around the conditions to visibly show the condition expressions.

if ((
    and (sttmt2 or sttmt3)
    or name == 'Goodman'

Related Article - Python Statement