SyntaxError: unexpected character after line continuation character

SyntaxError: unexpected character after line continuation character

我正在用 doctest 测试一段代码,我想在测试前这样评论:

Tests:
>>> part([('Eva', 'Sao Paulo', 21098, '04-12', 1182),\    #False, 1, 0
    ('Ana', 'Toquio', 21098, '06-12', 1182),\
    ('Ana', 'Sao Paulo', 21098, '04-12', 1096)])
    [2, 1]

问题是,当我 运行 shell 中的代码时,它给我一个语法错误:

File "/home/user/Desktop/file.py", line 44, in __main__.part
Failed example:
    part([('Eva', 'Sao Paulo', 21098, '04-12', 1182),\     #False, 1, 0
Exception raised:
    Traceback (most recent call last):
      File "/usr/lib/python2.7/doctest.py", line 1315, in __run
        compileflags, 1) in test.globs
      File "<doctest __main__.part[2]>", line 1
        part([('Eva', 'Sao Paulo', 21098, '04-12', 1182),\     #False, 1, 0
                                                                                   ^
    SyntaxError: unexpected character after line continuation character

您不能在行继续符 \ 之后放置 任何内容 。您在反斜杠后有评论:

... \     #False, 1, 0

去掉注释,换行直接跟在\:

后面
part([('Eva', 'Sao Paulo', 21098, '04-12', 1182),\
    ('Ana', 'Toquio', 21098, '06-12', 1182),\
    ('Ana', 'Sao Paulo', 21098, '04-12', 1096)])\
    [2, 1]

请注意 part(..) 调用后的额外 \ 以确保 [2, 1] 切片是其中的一部分!参见参考文档的Explicit line joining section

A line ending in a backslash cannot carry a comment. [...] A backslash is illegal elsewhere on a line outside a string literal.

但是,您根本不需要在括号内使用换行符,逻辑行会自动延长,直到所有括号和方括号都闭合:

part([('Eva', 'Sao Paulo', 21098, '04-12', 1182),    # False, 1, 0
      ('Ana', 'Toquio', 21098, '06-12', 1182),
      ('Ana', 'Sao Paulo', 21098, '04-12', 1096)])[2, 1]

可以在依靠括号扩展逻辑行时包含注释。

来自Implicit line joining section:

Expressions in parentheses, square brackets or curly braces can be split over more than one physical line without using backslashes. [...] Implicitly continued lines can carry comments.