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() |
如果不需要将它包含在单个表达式中,那么您也可以使用传统的