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.