繁体   English   中英

在Python中嵌套三元运算符

[英]Nesting the ternary operator in Python

在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>

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

你的第一个例子(可怕的单行)也是嵌套的。 水平嵌套。 你的第二个例子是垂直嵌套的。 它们都是嵌套的。

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

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

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

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

根据我的理解,这是“更大的”:

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

要检查的条件的顺序很重要,例如,如果只将<condition_2>作为第一个检查顺序,那么<statement_1>将永远不会被调用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM