继续行中的注释

fed*_*qui 11 python continuation

假设我有一个多行命令:

if 2>1 \
 and 3>2:
    print True
Run Code Online (Sandbox Code Playgroud)

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

if (2>1 #my comment
 and 3>2):
    print True
Run Code Online (Sandbox Code Playgroud)

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

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

但是,有时您需要使用continuation.例如,long,多个with语句不能使用隐式延续.那么,如何在特定行旁边添加注释?这不起作用:

with open('a') as f1, #my comment\
 open('b') as f2:
    print True
Run Code Online (Sandbox Code Playgroud)

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

Ser*_*sta 11

你不能.从Python参考手册(3.4)中找到一些摘录:

注释以散列字符(#)开头,该散列字符不是字符串文字的一部分,并在物理行的末尾结束.

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

注释表示逻辑行的结束,除非调用隐式行连接规则

隐式线连接:括号,方括号或花括号中的表达式可以在不使用反斜杠的情况下分割为多个物理线

隐含连续的行可以带有评论

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


Dag*_*ahl 5

同一行上不能有注释和反斜杠以继续行。您需要使用其他策略。

最基本的方法是调整注释文本,将其放置在相关部分之前。您还可以通过将返回上下文的代码重构为具有描述性名称的函数或方法来记录您的意图,而无需任何注释。