如果,elif和其他..优先和链

时间:2014-05-08 15:59:44

标签: python if-statement

我一直对Python有这种好奇心而我无法找到明确的答案,也许有人可以帮助我 什么是" if"," elif"和"否则"优先事项和工作方式? 如果我这样做:

if conditionA:
    do something
elif conditionB:
    do something else
else:
    do something else

" else"检查" elif"或两种情况"如果"和" elif"? 是否有任何有趣的顺序可供使用(例如if,else,elif,else等)? 感谢

3 个答案:

答案 0 :(得分:6)

在所有elseif语句都是假的之后,

elif是全能的。把它放在中间会出现语法错误。

不要想到else"检查条件。"想一想,如果其他人都是真的,控制流量永远不会达到else。多个elif也是如此。

考虑一下:

if False:
    print 'first'
elif True:
    print 'second'
elif True:
    print 'third'

即使third也不会打印,因为第二个是真的。第三个是真的并不重要,因为它甚至没有被评估。

如果您正在调用函数,这也会产生一些副作用:

if send_email(to_coworker):
    pass
elif send_email(to_boss):
    pass

假设函数返回True如果成功,那么发给你老板的电子邮件只会发送给你同事的电子邮件失败,即使需要调用该函数来评估elif条件< / em>的

答案 1 :(得分:1)

他们按照他们在文件中遇到的顺序进行处理。

if True:
  # Always executes.
elif False:
  # Is never checked.
else:
  # We never get this far, either.

一旦遇到评估True的第一个条件,就会执行相应的代码块。其他条件未经检查。

答案 2 :(得分:0)

它们本身没有优先级,真正重要的是顺序,因此将检查第一个条件,如果第一个条件为False,则检查第二个条件,依此类推,直到任何条件为True或执行if语句当且仅当所有条件都为False

在你的例子中,如果conditionA为True,那么if语句中的代码将被执行,而elif和else条件根本不重要。

如果conditionA为False且conditionB为True,则执行elif语句中的代码。

最后,只有当conditionA和conditionB为False时,才会执行else块内的代码