在多行列表字面量中放置注释

15 投票
1 回答
7038 浏览
提问于 2025-04-18 13:46

我正在做一个优化问题,并且写了一个很大的列表。我想在这个列表里面插入一些注释,像这样:

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 在括号、方括号和大括号内的隐式行续。长行可以通过把表达式放在括号中来分成多行。相比使用反斜杠来续行,应该优先使用这种方式。

以下摘自 显式行连接 的内容也很相关:

以反斜杠结尾的行不能包含注释。反斜杠不会继续注释。反斜杠不会继续其他的符号,除了字符串字面量(也就是说,除了字符串字面量以外的符号不能通过反斜杠在物理行上分割)。在字符串字面量之外,行中的反斜杠是非法的。

撰写回答