有没有一种方法可以在多行代码中添加注释?

83

这行不通:

something = \
    line_of_code * \    #  Comment
    another_line_of_code * \    #  Comment
    and_another_one * \         #  Comment
    etc

这也一样不行:

something = \
    #  Comment \
    line_of_code * \
    #  Comment \
    another_line_of_code * ...

这也不行:

something = \
    ''' Comment ''' \
    line_of_code * \
    ''' Comment ''' \
    another_line_of_code * ...

在代码中,有没有一种方法可以将注释分成多行?

2个回答

89

像这样做:

a, b, c, d = range(1, 5)

result = (
    # First is 1
    a *
    # Then goes 2, result is 2 now
    b *
    # And then 3, result is 6
    c *
    # And 4, result should be 24
    d
)

实际上,根据PEP8规范,当将内容分成多行时,括号优于斜杠:

包装长行的首选方式是使用Python中括号和花括号内的隐式换行。通过将表达式放在括号中,可以将长行分成多行。与使用反斜杠进行换行相比,应优先使用括号。

在您的情况下,它还允许添加注释。

这是一个证明,它有效的例子: http://ideone.com/FlccUJ


1
另外,您可以查看以下内容: http://www.python.org/dev/peps/pep-0008/#maximum-line-length - Yotam
@Yotam:实际上,请查看我回答中“_according to PEP8_”文本所附的链接。此外,我回答中的引用直接来自您在此处粘贴的内容。 - Tadeck
11
在这种情况下,我们应该怎么样才能将点分隔符拆开呢?obj.method1(args1).method2(args2).method3(args3) - iago-lito
不确定是否有内联的方法,但您可以这样做:a=obj.method1(args) # comm1b=obj.method2(args2) # comm2 等。 - Demis
3
如果我遇到这种情况,我也会使用括号将其分割。如果您想要对每个部分进行注释,则可以按照PEP8的规定进行注释:obj.method1( \n # Important method 1 \n args1 \n ).method2( \n # Importand other method \n args2 \n ).method3( \n # Method that needs to be called last \n args3 \n )。可能看起来有些繁琐,但嘿 - 是您想要在链中注释每个方法 :) - Tadeck
@iago-lito,只要表达式包含在最外面的括号中,就可以在句点和内部括号之前或之后有空格(换行符和/或空格,我没有测试制表符),因此分裂可以基本上放置在任何您想要的地方。 - Todd

1

我不确定你试图使用Python是否支持。请阅读PEP8有关行内注释的部分。在行连续中间放置注释是“丑陋”的,可能会令人困惑。

Python的方式是在每一行上使用#进行注释,如果您想要对某些内容进行注释或者对行内注释进行注释,则忽略#之后的所有内容。

如果您真的需要对多行语句进行注释,请在其前面或后面进行注释。

a, b, c, d = range(1, 5)
# a is ..., b is ...
# c is ..., d is ...
result = (a, b, c, d)

我绝对不想就风格问题与你争辩,但仅仅因为你能做到某件事,并不意味着它是清晰的。内联注释非常适合澄清只需简短指针的代码行。


2
PEP8中引用的部分并未提及行连续中的注释。它指出,如果显而易见,则内联注释会分散注意力,但有时很有用。在这种情况下,我认为它们是有用的。此外,可以对多行语句进行注释(请参见我的答案)。标准是将块注释放在它们所注释的内容之前(来源)- 当然,这是关于块注释,而不是内联注释(显然必须在注释部分之后)。 - Tadeck

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接