20

假设我有一个多行命令:

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

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

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

而且,事实上,它与PEP 8 指南推荐的这样做方式一致:

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

但是,有时您需要使用延续。例如,长的、多个 with 语句不能使用隐式延续。那么,如何在特定行旁边添加评论?这不起作用:

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

更一般地说,是否有一种通用方法可以在特定续行旁边添加评论?

4

4 回答 4

19

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

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

以反斜杠结尾的行不能带有注释

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

隐式行连接:括号、方括号或花括号中的表达式可以在多个物理行上拆分,而无需使用反斜杠

隐式续行可以携带注释

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

于 2015-05-05T12:22:30.477 回答
4

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

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

于 2015-05-05T11:23:00.650 回答
2

除了嵌套之外,我没有看到任何解决方案with

with open('a.txt', 'w') as f1: #comment1
    with open('b.txt', 'w') as f2: #comment2
        print True
于 2015-05-05T10:57:19.080 回答
0

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

我不推荐这个。--然而,有时你可以把你的评论伪装成一个字符串:

with open(('a', '# COMMENT THIS')[0]) as f1, \
     open(('b', '# COMMENT THAT')[0]) as f2:
    print(f1, f2)
于 2021-02-18T11:45:13.210 回答