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