继续行中的注释

时间:2015-05-05 10:26:46

标签: python continuation

说我有一个多线命令:

if 2>1 \
 and 3>2:
    print True

if块中,我可以使用括号括起行来在其中一个条件旁边添加注释:

if (2>1 #my comment
 and 3>2):
    print True

事实上,它与PEP 8 guideline的推荐方式一致:

  

包装长行的首选方法是在括号,括号和括号内使用Python隐含的行继续。通过在括号中包装表达式,可以在多行中分割长行。这些应该优先使用反斜杠进行续行。

但是,有时您需要使用continuation。例如,long, multiple with-statements cannot use implicit continuation。那么,如何在特定行旁边添加注释?这不起作用:

with open('a') as f1, #my comment\
 open('b') as f2:
    print True

更一般地说,是否有一种在特定延续线旁边添加注释的通用方法?

4 个答案:

答案 0 :(得分:11)

你做不到。查找Python reference manual (3.4)的一些摘录:

  

注释以不属于a的哈希字符(#)开头   字符串文字,并在物理行的末尾结束。

     

以反斜杠结尾的行不能发表评论

     

注释表示逻辑行的结束,除非隐含   调用行加入规则

     

隐式线连接:括号中的表达式,方括号或   花括号可以分成多个物理线而不用   使用反斜杠

     

隐含连续的行可以发表评论

因此,参考手册明确禁止在显式延续行中添加注释。

答案 1 :(得分:4)

您不能在同一行上有关于续行的注释和反斜杠。你需要使用其他策略。

最基本的是调整评论文字以放置它,例如在相关部分之前。您还可以通过重构将上下文返回到具有描述性名称的函数或方法的代码来记录您的意图而不发表任何评论。

答案 2 :(得分:2)

除了嵌套with

之外,我没有看到任何解决方案
with open('a.txt', 'w') as f1: #comment1
    with open('b.txt', 'w') as f2: #comment2
        print True

答案 3 :(得分:0)

不能在同一行中组合行尾注释 (#) 和行继续 (\)。

我不推荐这个。 -- 但是,有时您可以将评论伪装成字符串:

with open(('a', '# COMMENT THIS')[0]) as f1, \
     open(('b', '# COMMENT THAT')[0]) as f2:
    print(f1, f2)