如何在Python中换行(分割长代码行)?
给定:
e = 'a' + 'b' + 'c' + 'd'
我怎么把上面的内容写成两行呢?
e = 'a' + 'b' +
'c' + 'd'
10 个回答
307
处理长行代码的推荐方式是使用Python在括号、方括号和大括号内的隐式换行。 如果一行代码太长,可以通过在括号内换行来分成多行。这样做比用反斜杠来换行要更好。
不过,有时候使用反斜杠也是合适的。例如,多个长的with语句不能使用隐式换行,所以可以用反斜杠:
with open('/path/to/some/file/you/want/to/read') as file_1, \ open('/path/to/some/file/being/written', 'w') as file_2: file_2.write(file_1.read())
还有一种情况是使用assert语句。
确保继续的那一行缩进正确。推荐在二元运算符后面换行,而不是前面。这里有一些例子:
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)file_2.write(file_1.read())
PEP8现在推荐与数学家和出版商使用的相反的约定(在二元运算符处换行),这样可以提高可读性。
Donald Knuth的风格是在二元运算符前面换行,这样可以让运算符垂直对齐,从而减轻眼睛在判断加减项时的负担。
Donald Knuth在他的《计算机与排版》系列中解释了传统规则:“虽然段落中的公式总是在二元运算和关系之后换行,但显示的公式总是在二元运算之前换行。”
遵循数学的传统通常会使代码更易读:
# Yes: easy to match operators with operands
income = (gross_wages
+ taxable_interest
+ (dividends - qualified_dividends)
- ira_deduction
- student_loan_interest)
在Python代码中,可以在二元运算符前后换行,只要在局部保持一致就可以。对于新代码,建议使用Knuth的风格。
[3]: Donald Knuth的《TeXBook》,第195和196页
1547
什么是换行?你可以把参数放在下一行,这样也没问题:
a = dostuff(blahblah1, blahblah2, blahblah3, blahblah4, blahblah5,
blahblah6, blahblah7)
另外,你也可以这样做:
if (a == True and
b == False):
或者使用明确的换行:
if a == True and \
b == False:
想了解更多信息,可以查看风格指南。
使用括号的话,你的例子可以写成多行:
a = ('1' + '2' + '3' +
'4' + '5')
同样的效果也可以通过明确的换行来实现:
a = '1' + '2' + '3' + \
'4' + '5'
注意,风格指南提到使用括号进行隐式换行是更推荐的,但在这个特定情况下,单纯在表达式周围加上括号可能不是最佳选择。