Python中,代码行最大长度限制为79个字符,如果一行代码超过此限制,可以使用换行符将其拆分成多行。常见的换行方式包括自动字符串连接、括号和反斜杠。然而,关于如何格式化溢出的文本并没有明确的规定。需要将文本继续符放置到第1列、原始行开始的列还是括号的开头(如果适用)?例如,我们有如下代码:
self.someLongAttributeName = {'someLongKeyName':'someLongValueName',
'anotherLongKeyName':'anotherLongValueName'}
假设上述代码满足79个字符的限制,第二行的缩进是否正确?如果第一行超过79个字符,又该如何处理?
需要注意的是,本文不讨论遵守79个字符约定是否合理,仅讨论如何遵守此约定。因此,请不要在回复中阐述放弃此约定的好处。
2、解决方案:
如果上述代码满足79个字符限制,则第二行的缩进是正确的。
class Rectangle(Blob):
def __init__(self, width, height,
color='black', emphasis=None, highlight=0):
if width == 0 and height == 0 and \
color == 'red' and emphasis == 'strong' or \
highlight > 100:
raise ValueError("sorry, you lose")
if width == 0 and height == 0 and (color == 'red' or
emphasis is None):
raise ValueError("I don't think so -- values are %s, %s" %
(width, height))
Blob.__init__(self, width, height,
color, emphasis, highlight)
这是Python官方文档中的示例。
如果开头括号/大括号已经接近第79列,通常可以利用此点:
self.some_long_attribute_name = {
'someLongKeyName': 'someLongValueName',
'anotherLongKeyName': 'anotherLongValueName'
}
或
long_object_name.do_something_with_long_name(
long_expression_returning_is_first_arg,
long_expression_returning_is_second_arg
)
Python官方文档中还规定:
所有行都限制在最多79个字符。仍然有许多设备限制在80字符的行;此外,将窗口限制为80个字符可以并排放置多个窗口。此类设备上的默认换行会破坏代码的可视结构,使其更难理解。因此,请将所有行限制在最多79个字符。对于流动长的文本块(文档字符串或注释),建议将长度限制为72个字符。
包装长行的首选方法是使用Python在括号、方括号和大括号内隐含的行继续符。如有必要,您可以在表达式周围添加一对额外的括号,但有时使用反斜杠看起来更好。确保适当地缩进续行。在二元运算符周围中断的首选位置是在运算符之后,而不是之前。一些例子:
class Rectangle(Blob):
def __init__(self, width, height,
color='black', emphasis=None, highlight=0):
if width == 0 and height == 0 and \
color == 'red' and emphasis == 'strong' or \
highlight > 100:
raise ValueError("sorry, you lose")
if width == 0 and height == 0 and (color == 'red' or
emphasis is None):
raise ValueError("I don't think so -- values are %s, %s" %
(width, height))
Blob.__init__(self, width, height,
color, emphasis, highlight)
总结来说,在Python中使用换行符时,应遵循以下几点建议:
- 使用Python的隐式换行符,即在括号、方括号和大括号内换行。
- 如果需要,可以在表达式周围添加一对额外的括号,但有时使用反斜杠看起来更好。
- 确保适当地缩进续行。
- 在二元运算符周围中断的首选位置是在运算符之后,而不是之前。