在多行列表字面量中放置注释
我正在做一个优化问题,并且写了一个很大的列表。我想在这个列表里面插入一些注释,像这样:
my_rhs = [1.0, 1.0, 0.0, 0.0, 0.0,\ #comment1
-1.0, -1.0, -1.0,\ #comment2
0.0, 0.0, 0.0]
但是当我这样做的时候,Python会报错。我该怎么在这些地方添加注释呢?我尝试把每一行定义成一个新的列表,然后用+
来拼接,但这似乎也不行,像这样:
my_rhs = [1.0, 1.0, 0.0, 0.0, 0.0]+\ #comment1
[-1.0, -1.0, -1.0]+\ #comment2
[0.0, 0.0, 0.0]
我该怎么在这些地方添加注释,而不让Python报错呢?
1 个回答
21
你只需要去掉反斜杠字符:
my_rhs = [1.0, 1.0, 0.0, 0.0, 0.0, # comment1
-1.0, -1.0, -1.0, # comment2
0.0, 0.0, 0.0]
下面是一个示例:
>>> my_rhs = [1.0, 1.0, 0.0, 0.0, 0.0, # comment1
... -1.0, -1.0, -1.0, # comment2
... 0.0, 0.0, 0.0]
>>> my_rhs
[1.0, 1.0, 0.0, 0.0, 0.0, -1.0, -1.0, -1.0, 0.0, 0.0, 0.0]
>>>
这个 \
字符告诉 Python,后面的内容是当前行的一部分。所以,它会把这个理解为:
my_rhs = [1.0, 1.0, 0.0, 0.0, 0.0,\ #comment1
-1.0, -1.0, -1.0,\ #comment2
0.0, 0.0, 0.0]
等同于这个:
my_rhs = [1.0, 1.0, 0.0, 0.0, 0.0, #comment1 -1.0, -1.0, -1.0, #comment2 0.0, 0.0, 0.0]
值得注意的是,PEP 8 是 Python 代码的官方风格指南,其中有一部分讲到如何处理长行:
处理长行的推荐方式是使用 Python 在括号、方括号和大括号内的隐式行续。长行可以通过把表达式放在括号中来分成多行。相比使用反斜杠来续行,应该优先使用这种方式。
以下摘自 显式行连接 的内容也很相关:
以反斜杠结尾的行不能包含注释。反斜杠不会继续注释。反斜杠不会继续其他的符号,除了字符串字面量(也就是说,除了字符串字面量以外的符号不能通过反斜杠在物理行上分割)。在字符串字面量之外,行中的反斜杠是非法的。