SyntaxError:行继续符后面的意外字符

py_*_*y_9 1 python syntax-error

我正在使用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]
Run Code Online (Sandbox Code Playgroud)

问题是,当我在shell中运行代码时,它会给我一个synthax错误:

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
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 6

你不能在行继续符之后放任何东西\.反斜杠后你有意见:

... \     #False, 1, 0
Run Code Online (Sandbox Code Playgroud)

删除评论,换行必须直接遵循\:

part([('Eva', 'Sao Paulo', 21098, '04-12', 1182),\
    ('Ana', 'Toquio', 21098, '06-12', 1182),\
    ('Ana', 'Sao Paulo', 21098, '04-12', 1096)])\
    [2, 1]
Run Code Online (Sandbox Code Playgroud)

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

以反斜杠结尾的行不能发表评论.[...]反斜杠在字符串文字外的其他地方是非法的.

不过,你不需要使用续行符在所有的括号内,逻辑线将自动延长,直到所有的括号和括号都是关闭的:

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]
Run Code Online (Sandbox Code Playgroud)

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

隐含线加入部分:

括号,方括号或花括号中的表达式可以分割在多个物理行上,而不使用反斜杠.[...]隐含的继续行可以发表评论.