将一行“if else”语句分成多行

时间:2016-09-28 16:49:16

标签: python python-2.7 pep8

我想打破这段代码:

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

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

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

但这看起来有点难看而且不是很整洁。还有另一种方式吗?

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

4 个答案:

答案 0 :(得分:4)

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

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

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

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

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

如果你绝对必须避免三元表达(许多人似乎不喜欢它们),那么规范方法会更整洁:

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

有一个优点,任何Python程序员都可以阅读它,而不会想知道地球上发生了什么!

答案 3 :(得分:0)

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

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

或者您可以使用括号:

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