在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>
?特别是如果陈述和条件很长,第一行需要拆分?
答案 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>
。