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

时间:2016-04-15 22:28:38

标签: 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]

问题是,当我在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

1 个答案:

答案 0 :(得分:6)

您不能在行继续符\之后添加任何。你在反斜杠之后有评论:

... \     #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

  

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

但是,您不需要在括号内的所有处使用行继续符,逻辑行会自动扩展,直到所有括号和括号都关闭为止:

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

  

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