在Python中嵌套三元运算符

时间:2013-10-28 22:14:28

标签: python nested-statement

在Python的禅宗中,蒂姆·彼得斯说Flat is better than nested.。如果我理解正确,那么在Python中,这个:

<statement-1> if <condition> else <statement-2>

通常比这更受欢迎:

if <condition>:
    <statement-1>
else:
    <statement-2>

然而,在其他语言中,我被告知不要嵌套三元运算符,而是使用传统的if...else。那么,我的问题是我应该使用它:

(<statement-1> if <condition-1> else <statement-2>) if <condition-2> else <statement-3>

if <condition-2>:
    if <condition-1>:
        <statement-1>
    else:
        <statement-2>
else:
    <statement-3>

?特别是如果陈述和条件很长,第一行需要拆分?

3 个答案:

答案 0 :(得分:21)

您的第一个示例(可怕的单线程)也是嵌套的。水平嵌套。你的第二个例子是垂直嵌套的。他们嵌套。

哪个更好?第二个!为什么?因为“稀疏优于密集”打破了平局。

当你是蒂姆·彼得斯时很容易 - 大声笑; - )

答案 1 :(得分:3)

“Flat比嵌套好”是关于模块组织和数据结构,而不是源代码。例如,标准库主要作为顶级模块存在,几乎没有嵌套。

如果可以避免,请不要嵌套三元运算符,甚至根本不使用它。复杂比复杂更好。 :)

答案 2 :(得分:0)

根据我的理解,这是&#34; flater&#34;:

if <condition_2> and <condition_1>:
  <statement_1>
elif <condition_2>:
  <statement_2>
else:
  <statement_3>

要检查的条件的顺序很重要,例如如果您仅将<condition_2>作为第一个检查顺序,则永远不会调用<statement_1>