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

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

and

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

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

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


当前回答

我怀疑你会得到一个比“Guido觉得不需要多行注释”更好的答案。

圭多在推特上说:

Python提示:可以将多行字符串用作多行注释。除非用作文档字符串,否则它们不会生成代码!: -)

其他回答

做一件事应该只有一种方式,这与多行字符串和单行字符串或switch/case和if的使用相矛盾,不同形式的循环。

多行注释是一个非常常见的功能,让我们面对它,多行字符串注释是一个负面影响的黑客! 我见过很多代码使用多行注释技巧,甚至编辑器也使用它。

但我想每种语言都有自己的怪癖,开发者总是坚持不去修正它。我从java方面也知道这样的怪癖,这些怪癖从90年代末就开始了,从来没有被修复过!

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

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

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

if False:
    # A bunch of code

就我个人而言,我的评论风格在说Java是像

/*
 * My multi-line comment in Java
 */

因此,如果您的风格与前面的示例相同,那么只有单行注释并不是一件坏事,因为相比之下,您将拥有

#
# My multi-line comment in Python
#

VB。NET也是一种只有单行注释的语言,我个人觉得它很讨厌,因为注释最终看起来不像点赞的评论,而更像某种引用

'
' This is a VB.NET example
'

单行注释最终比多行注释使用更少的字符,并且不太可能被正则表达式语句中的一些狡猾的字符转义?不过我倾向于同意内德的观点。

对于任何在Python中寻找多行注释的人来说,使用三引号格式可能会产生一些有问题的后果,我刚刚经历了艰难的过程。考虑一下:

this_dict = {
    'name': 'Bob',

"""
This is a multiline comment in the middle of a dictionary
"""

    'species': 'Cat'
}

多行注释将被塞到下一个字符串中,使 “物种”的关键。最好只使用#注释。

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

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

试着用多行注释注释它:

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

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