如何在Python中进行换行符(行延续)?
2022-09-05 00:58:26
鉴于:
e = 'a' + 'b' + 'c' + 'd'
我如何用两行写上面的内容?
e = 'a' + 'b' +
'c' + 'd'
鉴于:
e = 'a' + 'b' + 'c' + 'd'
我如何用两行写上面的内容?
e = 'a' + 'b' +
'c' + 'd'
什么是线?您可以在下一行上有参数而不会出现任何问题:
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'
请注意,样式指南说最好使用带括号的隐式延续,但在这种特殊情况下,只是在表达式周围添加括号可能是错误的方法。
包装长行的首选方法是在括号,方括号和大括号内使用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())
另一种情况是断言语句。
确保适当地缩进连续的行。在二元运算符周围中断的首选位置是在运算符之后,而不是在运算符之前。一些例子:
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在他的《计算机与排版》系列中解释了传统规则:“虽然段落中的公式总是在二元运算和关系之后断开,但显示的公式总是在二元运算之前断开”[3]。
遵循数学传统通常会导致代码更具可读性:
# Yes: easy to match operators with operands
income = (gross_wages
+ taxable_interest
+ (dividends - qualified_dividends)
- ira_deduction
- student_loan_interest)
在 Python 代码中,允许在二进制运算符之前或之后中断,只要约定在本地一致即可。对于新代码,建议使用Knuth的样式。
[3]:唐纳德·高德纳的《The TeXBook》,第195和196页