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
.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…