在Python中嵌套三元运算符

Laz*_*h13 10 python nested-statement

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

<statement-1> if <condition> else <statement-2>
Run Code Online (Sandbox Code Playgroud)

通常比这更受欢迎:

if <condition>:
    <statement-1>
else:
    <statement-2>
Run Code Online (Sandbox Code Playgroud)

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

(<statement-1> if <condition-1> else <statement-2>) if <condition-2> else <statement-3>
Run Code Online (Sandbox Code Playgroud)

要么

if <condition-2>:
    if <condition-1>:
        <statement-1>
    else:
        <statement-2>
else:
    <statement-3>
Run Code Online (Sandbox Code Playgroud)

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

Tim*_*ers 22

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

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

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

  • 不公平,我们不可能都是 Tim Peters!我们只能努力去追求。 (2认同)

Eev*_*vee 2

“扁平比嵌套更好”是关于模块组织,也许还有数据结构,而不是你的源代码。例如,标准库大多作为顶级模块存在,嵌套很少。

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

  • 我不同意“如果可以避免的话,甚至完全使用它”——如果使用正确,这是一个可爱的语法。 (5认同)
  • 三元运算符是 fp 的重要组成部分。请使用。 (4认同)