将一行“if else”语句分成多行[重复]

Posted

技术标签:

【中文标题】将一行“if else”语句分成多行[重复]【英文标题】:Break one line of "if else" statement into multiple lines [duplicate] 【发布时间】:2017-02-06 18:43:35 【问题描述】:

我想破解这段代码:

ex = func(object) if not self.is_object() else foo()

到多行(pep 8)。 最好的方法是什么? 我想到了这个:

ex = func(object) \
    if not self.is_object() \
    else foo()

但这似乎有点难看,也不是很整洁。还有其他方法吗?

编辑:这与仅仅将一行分成多行不同,因为这是一个特殊的“表达式 if stmnt else stmnt”,而不仅仅是破坏任何 python 代码。

【问题讨论】:

没什么特别的;它只是一个三元运算符... if ... else ...,而不是一个二元运算符... + ... 【参考方案1】:

如果它不适合一行,最好将其分解为一个 if 语句:

if self.is_object():
    ex = foo()
else:
    ex = func(object)

或者你可以使用括号:

ex = (func(object)
       if not self.is_object()
       else foo())

【讨论】:

【参考方案2】:

如果您绝对必须避免使用三元表达式(很多人似乎不喜欢它们),那么规范方法会更简洁:

if self.is_object():
    ex = foo()
else:
    ex = func(object)

它的优点是任何 Python 程序员都可以阅读它,而不用想知道到底发生了什么!

【讨论】:

【参考方案3】:

这里到底有什么丑陋之处?反斜杠?有一种方法可以避免它们 要将语句拆分为多行,请在条件周围使用括号,如下所示:

ex = (func(object)
      if not self.is_object()
      else foo())

但也许写一个完整的条件结构会更好:

if not self.is_object():
    ex = func(object)
else:
    ex = foo()

【讨论】:

我认为你是对的。我会保持正常的方式。谢谢。【参考方案4】:

将其分成多行的最佳方法如下:

if not self.is_object():
    ex = func(object)
else:
    ex = foo()

如果您不需要将其包含在单个表达式中,您不妨使用传统的 if..else 块。

【讨论】:

以上是关于将一行“if else”语句分成多行[重复]的主要内容,如果未能解决你的问题,请参考以下文章

带有布尔条件的 if else 语句中的代码[重复]

Javascript IF,ELSE IF总是选择IF语句[重复]

R中的多个if else语句[重复]

在 SQL 中使用 IF/ELSE 重复 CASE 块

python3 中,一个语句可以分成多行书写吗

为啥我不能使用正则表达式来评估 if...else 语句 [重复]