Skip to main content
 首页 » 编程设计

python之语法错误 : unexpected character after line continuation character

2025年05月04日13zhengyun_ustc

我正在用 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.