代码之家  ›  专栏  ›  技术社区  ›  daltonfury42

python中的多行注释和多行字符串有什么区别?[副本]

  •  2
  • daltonfury42  · 技术社区  · 9 年前

    我还在探索蟒蛇。今天我遇到了多线弦。如果我这样做:

    a = '''
    some-text
    '''
    

    变量a的内容是 '\nsome-text\n' 但这让我感到困惑。我一直认为如果你用三个单引号括起来( ''' ),你在评论它。因此,上面的语句在C++中相当于这样:

    a = /*
    some-text
    */
    

    我错过了什么?

    2 回复  |  直到 9 年前
        1
  •  8
  •   Byte Commander    9 年前

    从技术上讲,这种用三重引号括起来的多行注释实际上不是注释,而是字符串文字。

    您仍然可以使用它们注释内容的原因是字符串文字本身并不表示任何类型的操作。它会被解析,但不会对其进行任何处理,也不会被分配给变量名,因此会被忽略。

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

    下面是一个代码示例,它……嗯,什么都没有:

    # This is a real comment.
    
    "useless normal string"
    
    """useless triple-quoted
    multi-line
    string"""
    
    [1, "two"]  # <-- useless list
    
    42  # <-- useless number
    
        2
  •  2
  •   Ninjakannon Ami Tavory    6 年前

    我一直认为如果你用三个单引号(“”)括起来

    事实并非如此。用三重引号将某物括起来 '''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?''')
    '''