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.