考虑到:
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'
注意,样式指南说使用隐式的括号继续是首选,但在这种特殊情况下,仅仅在表达式周围添加括号可能是错误的方式。
其他回答
来自PEP 8——Python代码风格指南:
对长行进行换行的首选方法是在括号、大括号和大括号内使用Python隐含的行延续。长行可以通过将表达式括在圆括号中来拆分为多行。这些应该优先于使用反斜杠来续行。
有时反斜杠仍然是合适的。例如,长且多的with-语句不能使用隐式延续,因此反斜杠是可以接受的:
以open('/path/to/some/file/you/want/to/read')为file_1, \ 打开('/path/to/some/file/being/written', 'w') as file_2: file_2.write (file_1.read ()) 另一种情况是使用assert语句。
确保适当缩进继续行。对二进制操作符进行换行的最佳位置是在操作符之后,而不是在它之前。一些例子:
类矩形(Blob): 定义__init__(self, width, height, color='black', emphasis=None, highlight=0): If (width == 0 and height == 0 and Color == 'red'和emphasis == 'strong' or 100): 抛出ValueError("抱歉,你输了") 如果width == 0 and height == 0 and (color == 'red' or 重点是None): 抛出ValueError("I don't think so - values are %s, %s" (宽度、高度)) Blob。__init__(self, width, height, 颜色,重点,高亮)file_2.write(file_1.read())
PEP8现在推荐数学家和他们的出版商使用相反的约定(用于二进制运算的中断)来提高可读性。
Donald Knuth在二进制运算符之前中断的风格使运算符垂直对齐,从而减少了眼睛在确定添加和减去哪些项时的工作量。
在二进制操作符之前还是之后换行?:
Donald Knuth在他的计算机和排版系列中解释了传统的规则:“尽管段落中的公式总是在二进制操作和关系之后中断,但显示的公式总是在二进制操作之前中断”[3]。
遵循数学的传统通常会产生更可读的代码:
# Yes:容易匹配操作符和操作数
income = (gross_wages
+ taxable_interest
+ (dividends - qualified_dividends)
- ira_deduction
- student_loan_interest)
在Python代码中,只要约定在局部一致,就允许在二进制操作符之前或之后进行换行。对于新代码,建议使用Knuth的风格。
[3]:唐纳德·克努斯的《教科书》,195页和196页
摘自《Python漫游指南》(Line Continuation):
当一个逻辑代码行长于可接受的限制时,您需要将其拆分到多个物理行上。如果一行的最后一个字符是反斜杠,Python解释器将连接连续的行。这在某些情况下是有用的,但通常应该避免,因为它很脆弱:在行末反斜杠之后添加空白将破坏代码,并可能产生意想不到的结果。 更好的解决方案是在元素周围使用圆括号。如果行尾有一个未关闭的圆括号,Python解释器将连接下一行,直到圆括号关闭为止。同样的行为也适用于大括号和方括号。 然而,通常情况下,必须分割很长的逻辑行是一个迹象,表明您试图同时做太多事情,这可能会影响可读性。
话虽如此,这里有一个例子,考虑多次导入(当超过行限制时,在PEP-8中定义),也适用于字符串:
from app import (
app, abort, make_response, redirect, render_template, request, session
)
在行末加一个\,或将语句括在parens(..)中。. 来自IBM的:
b = ((i1 < 20) and
(i2 < 30) and
(i3 < 40))
or
b = (i1 < 20) and \
(i2 < 30) and \
(i3 < 40)
你可以在圆括号和大括号之间换行。此外,你可以将反斜杠字符\附加到一行来显式地中断它:
x = (tuples_first_value,
second_value)
y = 1 + \
2
这条线是什么?你可以在下一行有参数,没有任何问题:
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'
注意,样式指南说使用隐式的括号继续是首选,但在这种特殊情况下,仅仅在表达式周围添加括号可能是错误的方式。