I have some code like this:
if var:
if var2 == getSomeValue()
This could be in a single expression.
if var and var2 == getSomeValue():
...but getSomeValue()
can only be called if var
is True.
So, when calling if var and var2 == getSomeValue()
, are both evaluated by the interpreter, or the evaluation stops at var
if False
? Where I can find this information on python documentation? (I didn't know what to search...:/ )
This is called short-circuiting, and Python does it, so you're good.
UPDATE: Here's a quick example.
>>> def foo():
... print "Yay!"
...
>>> if True and foo() is None:
... print "indeed"
...
Yay!
indeed
>>> if False and foo() is None:
... print "nope"
...
UPDATE 2: Putting the relevant PEP (308) in my answer so it doesn't get overlooked in the excellent comment from @Somebody still uses you MS-DOS.
The second item isn't evaluated - you could verify this with a simple program:
def boo():
print "hi"
return True
a = False
b = True
if a and b == boo():
print "hi2"
Running it produces no output, so you can see that boo()
is never called.
If var
is False
, evaluation stops.
See the Short-Circuit Behavior section in PEP 308.
The evaluation getSomeValue won't be evaluated:
var = False
if var and foo():
print "here"
else:
print "there"
def foo():
print "In foo"
return False
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With