【问题标题】:Ending a comment in Python在 Python 中结束评论
【发布时间】:2015-05-01 07:46:13
【问题描述】:

我已经读过这个:Why doesn't Python have multiline comments?

所以在我的 IDLE 中,我写了一条评论:

Hello#World

世界 d 之后的任何内容也是评论的一部分。在 c++ 中,我知道有一种关闭评论的方法,例如:

/*Mycomment*/

有没有办法在 Python 中结束评论?

注意:我不想不使用三引号。

【问题讨论】:

  • 不,没有。为什么要这样做?

标签: python


【解决方案1】:

您已经阅读过没有多行 cmets,只有单行。注释会导致 Python 忽略所有内容,直到行尾。你用换行符“关闭”它们!

我不是特别喜欢它,但是有些人使用多行字符串作为cmets。由于您只是丢弃了该值,因此您可以通过这种方式近似评论。只有当它是函数或类块中的第一行时,它才真正起作用,在这种情况下,它被视为docstring

此外,这可能更像是一种 shell 脚本约定,但使用多个单行 cmets 有什么不好?

#####################################################################
# It is perfectly fine and natural to write "multi-line" comments   #
# using multiple single line comments. Some people even draw boxes  #
# with them!                                                        #
#####################################################################

【讨论】:

  • “因为你只是在产生一个值然后把它扔掉”:FWIW,你没有在 CPython 中产生一个值——非文档字符串字符串文字不生成字节码。
  • 点了。糟糕的词选择,也许?对我来说,在没有命名或使用的程序中有文字感觉很不寻常。也许这只是一种风格。这就是我的意思,无论如何。 @DSM 更新了措辞。
  • @DSM:没有生成字节码,但字节码编译器在处理多行字符串文字之前“浪费”了时间和资源(假设它不是文档字符串)。就个人而言,这并不困扰我,特别是因为 Python 使用多行字符串文字正是为了这个目的(注释代码)本身,并且大多数模块仅在第一次遇到时才编译。
  • @martineau:鉴于 Guido 本人对此表示赞同,我认为我们这样做是安全的。 :-)
【解决方案2】:

除了结束行之外,您不能在 python 中关闭注释。

如果你真的想要在表达式或语句的中间提供注释,你可以做很多事情。

首先,使用函数注释参数 -- 注释可以是任何东西:

def func(arg0: "arg0 should be a str or int", arg1: (tuple, list)):
    ...

如果您以 ( 开头的表达式,则表达式将继续超出换行符,直到遇到匹配的 )。因此

assert (
    str
    # some comment
    .
    # another comment
    join
) == str.join

【讨论】:

    【解决方案3】:

    您可以使用字符串来模拟 cmets。它们不完全是 cmets,因为它们执行,但它们不返回任何东西。

    print("Hello", end = " ");"Comment";print("World!")
    

    【讨论】:

      【解决方案4】:

      如果以三引号开头,则以三引号结尾

      【讨论】:

        猜你喜欢
        • 2011-09-12
        • 2015-11-24
        • 1970-01-01
        • 1970-01-01
        • 2019-03-06
        • 2014-06-05
        • 2015-07-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多