In which order is an if statement evaluated in Python

python

Solution

The left clause will be evaluated first, and then the right one only if the first one is `False`.

This is why you can do stuff like:

if not person or person.name == 'Bob':
    print "You have to select a person and it can't be Bob"

Without it breaking.

Conversely, with an `and` clause, the right clause will only be evaluated if the first one is `True`:

if person and person.name:
   # ...

Otherwise an exception would be thrown when `person` is `None`.

Problem

If you have an if statement where several variables or functions are evaluated, in which order are they evaluated? ``` if foo > 5 or bar > 6: print 'foobar' ``` In this specific case, will foo be evaluated against the five and then bar against the 6 (left to right) or will it be evaluated right to left? I am assuming that a `or` and `and` is evaluated in the same order.

Original source