"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 callin开发者_JAVA百科g 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
The Python documentation says that and
and or
are short-circuiting, so no, var2 == getSomeValue()
won't be evaluated if var
is false.
Re "I didn't know what to search"
You don't need to search when there's an index available:
Browse to the Python home page. Successively click on
- DOCUMENTATION
- Current Docs
- index (it's in the top right corner)
- A
Scroll down until you see
and
bitwise
operator
You don't want bitwise
, click on operator
.
If you are on Windows, you have the manuals on your computer, with a nice-enough GUI interface. Check out the Contents / Index / Search / Favorites panes near the top left corner.
精彩评论