Welcome toVigges Developer Community-Open, Learning,Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
632 views
in Technique[技术] by (71.8m points)

In which order is an if statement evaluated in Python

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.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to Vigges Developer Community for programmer and developer-Open, Learning and Share
...