python中多行注释和多行字符串有什么区别?

时间:2016-05-11 15:16:05

标签: python syntax

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

a = '''
some-text
'''

变量a的内容为'\nsome-text\n'。但这让我感到困惑。我一直认为,如果你用三个单引号(''')括起来,你就会把它评论出来。所以上面的陈述将等同于C ++中的类似内容:

a = /*
some-text
*/

我错过了什么?

2 个答案:

答案 0 :(得分:4)

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

你仍然可以使用它们来评论东西的原因是字符串文字本身并不代表任何类型的操作。它被解析,但没有做任何事情,它没有被分配给变量名,所以它被忽略。

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

这是一个代码的例子......好吧,没有:

# This is a real comment.

"useless normal string"

"""useless triple-quoted
multi-line
string"""

[1, "two"]  # <-- useless list

42  # <-- useless number

答案 1 :(得分:0)

  

我一直认为如果你用三个单引号括起来的东西(&#39;&#39;&#39;)

实际情况并非如此。用三引号'''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?''')
'''