10

在 Python 之禅中,Tim Peters 指出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>

? 特别是如果语句和条件很长,并且第一行需要拆分?

4

3 回答 3

28

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

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

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

于 2013-10-29T00:09:33.977 回答
2

“平面优于嵌套”是关于模块组织,也许是数据结构,而不是你的源代码。例如,标准库主要作为顶层模块存在,嵌套很少。

不要嵌套三元运算符,如果可以避免的话,甚至不要使用它。复杂胜于复杂。:)

于 2013-10-28T22:25:33.970 回答
1

据我了解,这是“平坦的”:

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

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

于 2018-04-17T06:15:18.363 回答