语法 - 如何在Python中执行换行符(换行符)?
我有一长串代码,我希望在多行之间分解。 我使用什么,语法是什么?
例如,添加一串字符串,
e = 'a' + 'b' + 'c' + 'd'
并将它分成两行:
e = 'a' + 'b' +
'c' + 'd'
7个解决方案
960 votes
什么是线? 你可以在下一行有参数而没有任何问题:
a = dostuff(blahblah1, blahblah2, blahblah3, blahblah4, blahblah5,
blahblah6, blahblah7)
否则你可以这样做:
if a == True and \
b == False
查看样式指南以获取更多信息。
从您的示例行:
a = '1' + '2' + '3' + \
'4' + '5'
要么:
a = ('1' + '2' + '3' +
'4' + '5')
请注意,样式指南表示使用括号的隐式延续是首选,但在这种特殊情况下,只是在表达式周围添加括号可能是错误的方法。
Harley Holcombe answered 2018-12-23T13:31:08Z
184 votes
从Python代码的样式指南:
包装长行的首选方法是在括号,括号和括号内使用Python隐含的行继续。 通过在括号中包装表达式,可以在多行上分割长行。 这些应该优先使用反斜杠来继续行。
反斜杠有时可能仍然合适。 例如,long,多个with语句不能使用隐式延续,因此可以接受反斜杠:
# Yes: easy to match operators with operands
income = (gross_wages
+ taxable_interest
+ (dividends - qualified_dividends)
- ira_deduction
- student_loan_interest)
另一个这样的情况是使用断言语句。
确保适当地缩进续行。 打破二元运算符的首选位置是运算符之后,而不是它之前。 一些例子:
# Yes: easy to match operators with operands
income = (gross_wages
+ taxable_interest
+ (dividends - qualified_dividends)
- ira_deduction
- student_loan_interest)
编辑:PEP8现在推荐数学家及其出版商使用的相反惯例(用于打破二进制操作)以提高可读性。
Donald Knuth在二元运算符之前的破坏风格垂直对齐运算符,从而在确定添加和减去哪些项目时减少了眼睛的工作量。
从PEP8开始:如果在二元运算符之前或之后换行?:
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]:Donald Knuth的The TeXBook,第195和196页
jfs answered 2018-12-23T13:32:32Z
61 votes
使用反斜杠结束一行的危险在于,如果在反斜杠之后添加空格(当然,很难看到),则反斜杠不再按照您的想法进行操作。
有关更多信息,请参阅Python Idioms和Anti-Idioms(适用于Python 2或Python 3)。
George V. Reilly answered 2018-12-23T13:32:57Z
21 votes
您可以在括号和大括号之间划分线条。 此外,您可以将反斜杠字符\附加到一行以显式断开它:
x = (tuples_first_value,
second_value)
y = 1 + \
2
Konrad Rudolph answered 2018-12-23T13:33:17Z
20 votes
将\放在行尾或将该语句括在parens ( .. )中。来自IBM:
b = ((i1 < 20) and
(i2 < 30) and
(i3 < 40))
要么
b = (i1 < 20) and \
(i2 < 30) and \
(i3 < 40)
SCdF answered 2018-12-23T13:33:41Z
17 votes
从马的口:明确的线 加盟
可以是两条或更多条物理线 加入逻辑行使用 反斜杠字符(if 1900 < year < 2100 and 1 <= month <= 12 \
and 1 <= day <= 31 and 0 <= hour < 24 \
and 0 <= minute < 60 and 0 <= second < 60: # Looks like a valid date
return 1),如下: 当物理线路以a结尾时 反斜杠不是字符串的一部分 文字或评论,它与之相结合 以下形成单一逻辑 行,删除反斜杠和 跟随行尾字符。 对于 例:
if 1900 < year < 2100 and 1 <= month <= 12 \
and 1 <= day <= 31 and 0 <= hour < 24 \
and 0 <= minute < 60 and 0 <= second < 60: # Looks like a valid date
return 1
以反斜杠结尾的行不能 发表评论。 反斜杠不会 继续发表评论。 反斜杠确实如此 除了字符串,不要继续使用令牌 文字(即除了之外的标记) 字符串文字不能拆分 物理线路使用反斜杠)。 一个 反斜杠在其他地方是非法的 在字符串文字之外的行。
Jason Navarrete answered 2018-12-23T13:34:15Z
-1 votes
可能不是pythonic方式,但我通常使用带有join函数的list来编写像SQL查询这样的长字符串。
query = " ".join([
'SELECT * FROM "TableName"',
'WHERE "SomeColumn1"=VALUE',
'ORDER BY "SomeColumn2"',
'LIMIT 5;'
])
Hardik Sondagar answered 2018-12-23T13:34:36Z