【问题标题】:What is the difference between multi-line comment and multi-line string in python? [duplicate]python中的多行注释和多行字符串有什么区别? [复制]
【发布时间】:2016-09-07 02:29:49
【问题描述】:

我还在探索python。今天我遇到了多行字符串。如果我这样做:

a = '''
some-text
'''

变量a的内容是'\nsome-text\n'。但这让我很困惑。我一直认为,如果您将某些内容括在三个单引号 (''') 中,那么您就是在将其注释掉。所以上面的语句在 C++ 中就相当于这样:

a = /*
some-text
*/

我错过了什么?

【问题讨论】:

  • 评论很好解释here
  • 我一直认为,如果你用三个单引号 (''') 将某些内容括起来,你就是在注释掉它。 嗯,你不是。你把那个东西包装在一个字符串中。字符串,甚至是文档字符串,在技术上都不是 cmets(它们被评估,cmets 不是)。
  • 回答您的问题,请参阅stackoverflow.com/a/7057488/622306
  • @GianlucaMancini 所以没有多线 cmets 这样的东西。并且多行字符串加倍作为文档字符串。两者都被编译。但单行 cmets 不是。对吗?
  • @daltonfury42 您可以使用 any 字符串作为文档字符串:def f():\n"hello"\n return 42 工作正常,并提供 "hello" 作为 f.__doc__。使用多行字符串作为 cmets 所做的与在随机位置使用数字完全相同:`do_something; 42; do_something_else'。 Python 计算表达式,但由于它的值没有保存在任何地方,它是无用的;如果您使用的是文字,它将被编译出来,除非用作文档字符串。

标签: python syntax


【解决方案1】:

我一直认为,如果你用三个单引号 (''') 将某些内容括起来

实际上并非如此。用三重引号 '''string''' 将某些内容括起来,它会创建一个字符串表达式,该表达式会生成一个包含引号内字符的字符串。这与单引号字符串'string' 之间的区别在于前者可以在多行上。人们经常使用它来注释多行。

但是,如果您不将字符串表达式分配给变量,那么您会得到很像注释的东西。

'''this is
a useless piece of python
text that does nothing for
your program'''

在 python 中,用''' 包装您的代码会将其编码为字符串,有效地将其注释掉,除非该代码已在任何地方包含多行字符串文字'''。然后,字符串将被终止。

print('''hello!
How are you?''')

# this will not have the intended comment effect
'''
print('''hello!
How are you?''')
'''

【讨论】:

    【解决方案2】:

    从技术上讲,这种用三引号括起来的多行 cmets 并不是真正的 cmets,而是字符串文字。

    您仍然可以使用它们来注释掉内容的原因是字符串文字本身并不代表任何类型的操作。它被解析了,但什么也没做,也没有分配给变量名,所以它被忽略了。

    您还可以将任何其他文字放入您的代码中。只要它不涉及任何类型的操作或赋值,它基本上会像注释一样被忽略。 不是评论,如果你想这样命名它只是无用的代码。

    这是一个代码示例......好吧,什么都没有:

    # This is a real comment.
    
    "useless normal string"
    
    """useless triple-quoted
    multi-line
    string"""
    
    [1, "two"]  # <-- useless list
    
    42  # <-- useless number
    

    【讨论】:

      猜你喜欢
      • 2010-09-13
      • 2011-02-26
      • 2011-09-05
      • 1970-01-01
      • 2013-10-05
      • 1970-01-01
      • 2014-01-20
      • 1970-01-01
      相关资源
      最近更新 更多