首页 文章

为什么Python没有多行注释?

提问于
浏览
228

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

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

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

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

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

16 回答

  • 33
    # This
    # is
    # a 
    # multi-line
    # comment
    

    在编辑器中使用注释块或搜索并替换(s / ^ /#/ g)来实现此目的 .

  • 0

    来自The Zen of Python

    应该有一个 - 最好只有一个 - 明显的方法来做到这一点 .

  • 3

    要在Pycharm IDE中注释掉一段代码:

    • 代码|评论线评论

    • Windows或Linux:Ctrl /

    • Mac OS:Command /

  • 28

    我通过下载我的文本编辑器(TextPad)的宏来解决这个问题,它允许我突出显示行,然后在每行的第一行插入# . 一个类似的宏删除# . 有些人可能会问为什么多行是必要的,但是当你试图“关闭”一段代码用于调试时,它会派上用场 .

  • 11

    因为#约定是常见的,并且确实没有带有#-sign注释的't anything you can do with a multiline comment that you can't . 这是一次历史性的事故,就像回到PL / I的评论一样,

  • 0

    假设他们被认为是不必要的 . 由于只需键入 #a comment 就很容易,因此多行注释可以包含许多单行注释 .

    另一方面,对于HTML,更难以输入 <!--comments like this--> .

  • 4

    就个人而言,我的评论风格就像Java一样

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

    因此,如果您的风格是前面示例的典型风格,那么仅使用单行注释并不是一件坏事,因为相比之下您会有

    #
    # My multi-line comment in Python
    #
    

    VB.NET也是一种只用单行注释的语言,我个人觉得它很烦人,因为评论最终看起来不那么喜欢评论,更像是某种引用

    '
    ' This is a VB.NET example
    '
    

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

  • 58

    我怀疑你会得到一个更好的答案,“Guido不觉得需要多行评论” .

    Guido有tweeted关于这个:

    Python技巧:您可以使用多行字符串作为多行注释 . 除非用作文档字符串,否则它们不会生成代码! :-)

  • 2

    多行注释很容易破解 . 如果您在简单的计算器程序中有以下内容怎么办?

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

    尝试使用多行注释对此进行评论:

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

    糟糕,您的字符串包含结束注释分隔符 .

  • 7

    三重引用的文本不应被视为多行注释;按惯例,它们是docstrings . 它们应该描述代码的作用以及如何使用它,但不能描述注释掉代码块之类的内容 .

    根据Guido,multiline comments in Python are just contiguous single-line comments(搜索"block comments") .

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

    if False:
        # A bunch of code
    
  • 249

    这可能追溯到核心概念,即应该有一种明显的方法来完成任务 . 其他评论样式会增加不必要的复杂性并可能降低可读性

  • -1

    好吧,三引号用作文档字符串中的多行注释 . #comments用作内联注释,人们可以使用它 .

    大多数脚本语言也没有多行注释 . 也许这就是原因?

    PEP 0008,评论部分

    并查看您的Python编辑器是否为块注释提供了一些键盘快捷键 . Emacs支持它,以及Eclipse,大概是大多数体面的IDE都支持它 .

  • 0

    这只是猜测..但是

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

  • 0

    此外,multiline comments are a bitch . 很抱歉,但不管语言如何,除了调试之外,我不会将它们用于其他任何事情 . 假设你有这样的代码:

    void someFunction()
    {
        Something
        /*Some comments*/
        Something else
    }
    

    然后你会发现你的代码中有些东西无法用调试器修复,所以你可以通过用theese多行注释注释掉越来越小的代码块来手动调试它 . 这样就可以了功能:

    void someFunction()
    { /*
        Something
       /* Comments */
       Something more*/
    }
    

    这真的很烦人 .

  • 0

    使用 IDLE 的多行注释:

    • Mac OS X ,在选择代码后,使用Ctrl 3注释代码块并使用Ctrl 4取消注释 .

    • Windows ,在选择代码后,使用Ctrl Alt 3注释代码块,并使用Ctrl At 4取消注释 .

  • 3

    我记得读到一个将他的多行注释放入三引号变量的人:

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

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

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

    x = '''
    

    '''
    

相关问题