将注释放在多行列表文字中

时间:2014-07-17 21:38:09

标签: python list comments literals

我正在做一个优化问题并编写一个巨大的列表。我想在列表中插入注释,如下所示

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 个答案:

答案 0 :(得分:11)

您只需删除反斜杠字符:

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的暗示   括号,括号和括号内的行继续。排长龙   可以通过包装表达式来分解多行   括弧。这些应该优先使用反斜杠   换行。

Explicit Line Joining的摘录也很重要:

  

以反斜杠结尾的行无法发表评论。反斜杠确实如此   不要继续发表评论。反斜杠不会继续使用令牌,除非   对于字符串文字(即,字符串文字以外的标记不能   使用反斜杠划分物理线路)。反斜杠是非法的   字符串文字外的一行上的其他地方。