好的,我知道三引号字符串可以作为多行注释。例如,

"""Hello, I am a 
   multiline comment"""

and

'''Hello, I am a 
   multiline comment'''

但从技术上讲,这些是字符串,对吧?

我已经在谷歌上搜索并阅读了Python风格指南,但我无法找到一个技术上的答案,为什么没有正式实现多行/* */类型的注释。我对使用三引号没有问题,但我有点好奇是什么导致了这个设计决定。


当前回答

我记得读过一个家伙,他会把他的多行注释放入一个三引号变量中:

x = '''
This is my
super-long mega-comment.
Wow there are a lot of lines
going on here!
'''

这确实会占用一些内存,但它为您提供了多行注释功能,而且大多数编辑器都会为您突出显示语法:)

通过简单地包装代码,注释代码也很容易

x = '''

and

'''

其他回答

多行注释很容易被破坏。如果你有以下一个简单的计算器程序?

operation = ''
print("Pick an operation:  +-*/")
# Get user input here

试着用多行注释注释它:

/*
operation = ''
print("Pick an operation:  +-*/")
# Get user input here
*/

哎呀,你的字符串包含结束注释分隔符。

三引号文本不应被视为多行注释;按照惯例,它们是文档字符串。它们应该描述你的代码做了什么以及如何使用它,而不是像注释掉代码块这样的事情。

根据Guido的说法,Python中的多行注释只是连续的单行注释(搜索“块注释”)。

为了注释代码块,我有时会使用以下模式:

if False:
    # A bunch of code

这只是猜测。但

因为它们是字符串,所以它们有一些语义值(编译器不会删除它们),因此将它们用作文档字符串是有意义的。它们实际上成为AST的一部分,因此提取文档变得更加容易。

注释掉Pycharm IDE中的一段代码:

代码|注释与行注释 Windows、Linux:按“Ctrl + /” Mac操作系统:Command + /

这可能又回到了一个核心概念,即应该有一种明显的方法来完成一项任务。额外的注释样式增加了不必要的复杂性,并可能降低可读性。