首页 文章

如何在Python中进行换行(换行)?

提问于
浏览
844

我有一长串代码,我希望在多行之间分解 . 我使用什么,语法是什么?

例如,添加一串字符串,

e = 'a' + 'b' + 'c' + 'd'

并将它分成两行:

e = 'a' + 'b' +
    'c' + 'd'

8 回答

  • 61

    在行的末尾放置 \ 或将语句括在parens ( .. ) 中 . 来自IBM

    b = ((i1 < 20) and
         (i2 < 30) and
         (i3 < 40))
    

    要么

    b = (i1 < 20) and \
        (i2 < 30) and \
        (i3 < 40)
    
  • 20

    摘自The Hitchhiker的Python指南(Line Continuation):

    当逻辑代码行长于可接受的限制时,您需要将其拆分为多个物理行 . 如果行的最后一个字符是反斜杠,Python解释器将连接连续的行 . 这在某些情况下很有用,但通常应该避免因为它的脆弱性:在反斜杠之后添加到行尾的空格会破坏代码并可能产生意外结果 . 更好的解决方案是在元素周围使用括号 . 在行尾留下一个未闭合的括号,Python解释器将加入下一行,直到括号被关闭 . 对于大括号和方括号,同样的行为也适用 . 但是,通常情况下,必须拆分长逻辑行表示您试图同时执行太多操作,这可能会妨碍可读性 .

    话虽如此,这里有一个关于多次导入的例子(当超过line limits, defined on PEP-8时):

    from app import (
        app, abort, make_response, redirect, render_template, request, session
    )
    
  • 21

    可能不是pythonic方式,但我通常使用带有join函数的list来编写像SQL查询这样的长字符串 .

    query = " ".join([
        'SELECT * FROM "TableName"',
        'WHERE "SomeColumn1"=VALUE',
        'ORDER BY "SomeColumn2"',
        'LIMIT 5;'
    ])
    
  • 969

    使用反斜杠结束一行的危险在于,如果在反斜杠之后添加空格(当然,很难看到),则反斜杠不再按照您的想法进行操作 .

    有关更多信息,请参阅Python Idioms和Anti-Idioms(适用于Python 2Python 3) .

  • -1

    Style Guide for Python Code

    包装长行的首选方法是在括号,括号和括号内使用Python隐含的行继续 . 通过在括号中包装表达式,可以在多行上分割长行 . 这些应该优先使用反斜杠来继续行 . 反斜杠有时可能仍然合适 . 例如,long,多个with语句不能使用隐式延续,因此可以接受反斜杠:open('/ path / to / some / file / you / want / to / read')as file_1,
    打开('/ path / to / some / file / being / written','w')作为file_2:
    file_2.write(file_1.read())
    另一个这样的情况是使用断言语句 . 确保适当地缩进续行 . 打破二元运算符的首选位置是运算符之后,而不是它之前 . 一些例子:类Rectangle(Blob):

    def __init (自我,宽度,高度,
    color ='black',emphasis = None,highlight = 0):
    if(width == 0和height == 0和
    color =='red'和emphasis =='strong'或
    突出显示> 100):
    提出ValueError(“抱歉,你输了”)
    如果width == 0且height == 0且(color =='red'或
    重点是无):
    提出ValueError(“我不这么认为 - 值是%s,%s”%
    (宽度,高度))
    Blob .
    init __(自我,宽度,高度,
    颜色,重点,突出)

    编辑:PEP8现在推荐数学家及其出版商使用的相反惯例(用于打破二进制操作)以提高可读性 .

    Donald Knuth打破 before 二元运算符的风格使运算符垂直对齐,从而在确定添加和减去哪些项目时减少了眼睛的工作量 .

    PEP8: Should a line break before or after a binary operator?

    Donald Knuth在他的计算机和排版系列中解释了传统规则:“虽然段落中的公式总是在二元运算和关系之后中断,但显示的公式总是在二元运算之前中断”[3] . 遵循数学传统通常会产生更易读的代码:#Yes:易于将操作符与操作数匹配
    收入=(gross_wages
    taxable_interest
    (股息 - qualified_dividends)

    • ira_deduction
    • student_loan_interest)
      在Python代码中,只要约定在本地一致,就允许在二元运算符之前或之后中断 . 对于新代码,建议使用Knuth的样式 .

    [3]:Donald Knuth的The TeXBook,第195和196页

  • 17

    从马的口中:显式线连接可以使用反斜杠字符(\)将两条或更多条物理线连接成逻辑线,如下所示:当物理线以不是字符串文字或注释的反斜杠结尾时,它连接以下形成一个逻辑行,删除反斜杠和下面的行尾字符 . 例如:如果1900 <年<2100且1 <=月<= 12
    和1 <=天<= 31和0 <=小时<24
    和0 <=分钟<60和0 <=秒<60:#看起来像一个有效的日期
    返回1
    以反斜杠结尾的行不能发表评论 . 反斜杠不会继续评论 . 除了字符串文字之外,反斜杠不会继续使用令牌(即除了字符串文字之外的标记不能使用反斜杠在物理行之间拆分) . 反斜杠在字符串文字之外的其他地方是非法的 .

  • 0

    您可以在括号和大括号之间划分线条 . 此外,您可以将反斜杠字符 \ 附加到一行以显式断开它:

    x = (tuples_first_value,
         second_value)
    y = 1 + \
        2
    
  • 187

    什么是线?你可以在下一行有参数而没有任何问题:

    a = dostuff(blahblah1, blahblah2, blahblah3, blahblah4, blahblah5, 
                blahblah6, blahblah7)
    

    否则你可以这样做:

    if a == True and \
       b == False
    

    有关更多信息,请查看style guide .

    从您的示例行:

    a = '1' + '2' + '3' + \
        '4' + '5'
    

    要么:

    a = ('1' + '2' + '3' +
        '4' + '5')
    

    请注意,样式指南表示使用括号的隐式延续是首选,但在这种特殊情况下,只是在表达式周围添加括号可能是错误的方法 .

相关问题