关于python:将一行“if else”语句分成多行

Break one line of “if else” statement into multiple lines

本问题已经有最佳答案,请猛点这里访问。

我想破译这段代码:

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

到多条线(PEP 8)。最好的方法是什么?我想到了:

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

但这看起来有点难看,不太整洁。还有别的办法吗?

编辑:这与将一行拆分为多行不同,因为这是一个特殊的"expression if stmt else stmt",而不仅仅是拆分任何python代码。


这里到底有什么难看的?Backslashes?有办法避免他们要将语句拆分为多行,请在条件周围使用括号,如下所示:

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

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

1
2
3
4
if not self.is_object():
    ex = func(object)
else:
    ex = foo()


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

1
2
3
4
if self.is_object():
    ex = foo()
else:
    ex = func(object)

或者可以使用括号:

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


如果您必须避免三元表达式(许多人似乎不喜欢它们),则规范方法将更整洁:

1
2
3
4
if self.is_object():
    ex = foo()
else:
    ex = func(object)

这有一个优点,任何一个Python程序员都可以在不知道究竟发生了什么的情况下读取它!


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

1
2
3
4
if not self.is_object():
    ex = func(object)
else:
    ex = foo()

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