[英]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.