Search code examples
pythonshort-circuiting

"if var and var2 == getSomeValue()" in python - if the first is false, is the second statement evaluated?'


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...:/ )


Solution

  • 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.