如何在不牺牲缩进的情况下用Python包装长行?
例如:
def fun():
print '{0} Here is a really long sentence with {1}'.format(3, 5)
假设这超过了79个字符的推荐限制。我读它的方式是,这里是如何缩进它:
def fun():
print '{0} Here is a really long \
sentence with {1}'.format(3, 5)
但是,使用这种方法,连续行的缩进与fun()
的缩进匹配。这看起来有点难看。如果有人要检查我的代码,那么由于这个print
语句,缩进不均匀看起来很糟糕。
如何在不牺牲代码可读性的情况下有效地缩进这样的行?
在缩进无关紧要的情况下,可以使用以下代码:
你只需要把字符串放在括号里。
相邻的字符串文本在编译时连接在一起,就像在C中一样。http://docs.python.org/reference/lexical_analysis.html#string-literal-concatenation是获取更多信息的好地方。
有两种方法没有在上面提到,但是这两种方法都以符合PEP 8和的方式来解决问题,允许您更好地利用您的空间。它们是:
请注意,括号是如何使用的,它允许我们不在纯字符串之间添加加号,并将结果分散到多行上,而不需要显式的行继续“\”(难看且杂乱无章)。 其优点与下面描述的相同,区别在于您可以在任何地方执行此操作。 与前一种方法相比,在检查代码时,它在视觉上更好,因为它清楚地勾勒了
msg
的开始和结束(与msg +=
每行一个比较,这需要一个额外的思考步骤来推断这些行添加到同一个字符串-如果你犯了错,忘记了一个随机行上的+
怎么办?)。对于这种方法,很多时候我们必须使用迭代来构建一个字符串,并在迭代体中进行检查,因此在函数调用中添加它的片段(如后文所示)不是一个选项。
一个很好的选择是:
尽管第一个更好。
另一种方法与前面的方法类似,尽管它在
print
下面的行上启动消息。 这样做的原因是为了在左侧获得空间,否则print(
本身会将您“推”到右侧。缩进的这种消耗是由组成消息的其余行继承的,因为根据PEP 8,它们必须与它们上面的print
的左括号对齐。所以,如果你的信息已经很长了,那么就不得不用这种方式传播更多的信息。对比度:
有了这个(这里建议):
减少了线间距。当然,这最后一种方法对
print
不太适用,因为它是一个简短的调用。但它确实适用于例外情况。您可以有一个变体:
注意纯字符串之间不需要加号。此外,缩进引导读者的眼睛,没有左下方的括号。这些替代品可读性很强。特别是,这种方法使得编写生成代码或数学公式的代码成为一项非常愉快的任务。
相关问题 更多 >
编程相关推荐