2.3.1 字符串类型的字面值形式

最后更新于:2022-04-02 00:25:52

### 2.3.1 字符串类型的字面值形式 由于计算机程序本身要用字符序列来表示,因此程序中的命令、变量名、字面值、标点 符号等等都是字符组成的序列,但它们是程序构件而不是数据。这就带来一个问题:如何区 分程序中的某一个字符序列到底是字符串数据还是程序构件?几乎所有编程语言都采用了 加引号的方法来解决这个问题:字符串数据必须用一对引号括起来。 Python 语言提供了字符串数据类型 str,并且在表示字符串数据方面比其他语言更灵 活。在 Python 中,字符串的字面值有四种形式: (1)用单引号括起来的字符串,例如 ``` >>> 'a string enclosed in single quotes' 'a string enclosed in single quotes' ``` (2)用双引号括起来的字符串,例如 ``` >>> "a string enclosed in double quotes" 'a string enclosed in single quotes' ``` (3)用三个单引号括起来的字符串,例如 ``` >>> '''a multiple-line string enclosed in triple quotes''' 'a multiple-line string\nenclosed in\ntriple quotes' ``` (4)用三个双引号括起来的字符串,例如 ``` >>> """a multiple-line string enclosed in triple double-quotes""" 'a multiple-line string\nenclosed in\ntriple double-quotes' ``` 用单引号或双引号括起来的字符串必须在一行内表示,是程序设计中最常用的形式。而 用三个单引号或三个双引号括起来的字符串可以是多行的,主要用于一个特殊用法——文档 字符串(docstring),具体用法在略过。 字符串可以存储在变量中,从而得到字符串类型的变量。例如: ``` >>> s = "Hello" >>> type(s) ``` 用单引号还是双引号来界定字符串并没有差别,Python 之所以提供这两种表示法,是 为了能更方便地表示某些字符串。例如,如果使用双引号作为界定符,而我们的文本数据是 ``` He said, "OK". ``` 即字符串数据本身使用了双引号这个字符,那么如下形式的字符串数据 ``` "He said, "OK"." ``` 显然要出问题,因为 Python 在从左向右读这个字符序列的时候,会将"He said, "解释成 一个字符串数据,然后又因为无法解释后面的字符序列 OK"."而导致出错。为了避免出现 这样的问题,我们可以使用单引号来界定字符串,从而得到 ``` 'He said, "OK".' ``` Python 对这个字符串完全可以给出正确解释:看到第一个单引号,就知道开始了一个字符 串,接下去的字符(包括双引号)都是字符串的组成部分,直至遇见第二个单引号为止。 类似地,如果文本数据中出现了单引号字符,那么我们可以使用双引号作为字符串界定 符,如"Tom's World"之类。较真的读者马上会联想到:那万一文本数据中既有单引号又 有双引号怎么办?例如: ``` He said, "I'll do it". ``` 这种情况下用单引号或双引号都会出错。Python 的解决方法是使用转义字符“\”,例如上 面这个文本数据在程序中可以用如下字符串表示: ``` "He said, \"I'll do it\"." ``` 其中\"使得双引号不再按界定符的意义解释,而是转变为普通的双引号意义。举一反三, 显然下面这种形式的字符串也是正确的: ``` 'He said, "I\'ll do it".' ``` 因为用单引号作为字符串界定符,所以字符串内部的单引号要用转义字符“\”来转变意义。
';