将一行“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”语句分成多行[重复]的主要内容,如果未能解决你的问题,请参考以下文章