字符串是值,就像数字一样:
>>> "Hello, world!"
'Hello, world!'
但是,本例中有一个地方可能会让人觉得吃惊:当Python打印出字符串的时候,是用单引号括起来的,但我们在程序中用的是双引号。这有什么区别吗?事实上,没有区别。
>>> "Hello, world!"
'Hello, world!'
这里也用了单引号,结果是一样的。那么,为什么两个都可以用呢?因为在某些情况下,它们会派上用场:
>>> "Let's go!"
"Let's go!"
>>> '"Hello, world!" she said'
'"Hello, world!" she said'
在上面的代码中,第一段字符串包含了单引号(或者叫撇号 。根据这里的上下文,应该称之为撇号),这时候就不能用单引号将整个字符串括起来了。如果这么做,解释器会抱怨道(它这么做也是正确的):
>>> 'Let's go!'
SyntaxError: invalid syntax
在这里字符串为'Let',Python并不知道如何处理后面的s(也就是该行余下的内容)。
在第二个字符串中,句子包含了双引号。所以,出于之前所述的原因,就需要用单引号把字符串括起来了。或者,并不一定要这样做,尽管这样做很直观。另外一个选择就是:使用反斜线(\)对字符串中的引号进行转义:
>>> 'Let\'s go!'
"Let's go!"
Python会明白中间的单引号是字符串中的一个字符,而不是字符串的结束标记(即便如此,Python也会在打印字符串的时候在最外层使用双引号)。有读者可能已经猜到了,对双引号也可以使用相同的方式转义:
>>> "\"Hello, world!\" she said"
'"Hello, world!" she said'
像这样转义引号十分有用,有些时候甚至还是必需的。例如,如果希望打印一个包含单双引号的字符串,不用反斜线的话能怎么办呢?比如字符串'Let\'s say "Hello, world!"'?
注意 厌烦反斜线了吧?在本章后面的内容中,将会介绍通过使用长字符串和原始字符串(两者可以联合使用)来减少绝大多数反斜线的使用。