"如果var和var2 == getSomeValue()"在python中 - 如果第一个为false,那么第二个语句是否被评估?

Som*_*DOS 5 python short-circuiting

我有一些像这样的代码:

if var:
    if var2 == getSomeValue()
Run Code Online (Sandbox Code Playgroud)

这可以是单个表达式.

if var and var2 == getSomeValue():
Run Code Online (Sandbox Code Playgroud)

...但getSomeValue()只有在var为True时才能调用.

那么,在调用时if var and var2 == getSomeValue(),是否都由解释器评估,或者评估在varif处停止False?我在哪里可以找到有关python文档的信息?(我不知道要搜索什么...:/)

Han*_*Gay 10

这称为短路,Python就是这样做的,所以你很好.

更新:这是一个简单的例子.

>>> def foo():
...     print "Yay!"
... 
>>> if True and foo() is None:
...     print "indeed"
... 
Yay!
indeed
>>> if False and foo() is None:
...     print "nope"
... 
Run Code Online (Sandbox Code Playgroud)

更新2:将相关的PEP(308)放在我的答案中,以便在@Somebody的优秀评论中不会被忽视,仍然使用MS-DOS.