实际上在Python中'...'"..."是完全一样的,但不能出现'...""...'这种情况。
而将其混合使用会有很多意想不到的效果:
具体规则如下:

  1. 若字符串没有引号嵌套,则对可打印转义字符(\\,\',\",\ooo,\xhh)进行转义。
  2. 若字符串有引号嵌套,则对嵌套内部字符全部不进行转义,保持原始格式;对嵌套外部字符参照1进行转义。

注意print会对所有转义字符进行转义。

下面是几个有代表性的例子:

>>> 'spam eggs'
'spam eggs'

>>> 'doesn\'t'  # 对可打印字符转义
"doesn't"

>>> "doesn\'t"  # 同上
"doesn't"

>>> "doesn't"  # 这样可以省去\
"doesn't"

>>> '"doesn\'t"'  # 嵌套后内部全部不进行转义
'"doesn\'t"'

>>> "\"Yes,\" he said."  # 同类型引号,需要进行转义
'"Yes," he said.'

>>> '"Yes," he said.'  # 这样可以省去\
'"Yes," he said.'

>>> '"Isn\'t," she said.'  # 嵌套后内部全部不进行转义
'"Isn\'t," she said.'

>>> print '"Isn\'t," she said.' # print对所有转义字符进行转义
"Isn't," she said.

>>> s='First line.\nSecond line.'

>>> s  # 对不可打印字符不进行转义
'First line.\nSecond line.'

>>> print s  # print对所有转义字符进行转义
First line.
Second line.

一般而言不经常使用三引号'''...'''及"""..."""
但三引号有一个特殊的性质:会自动在每一行末尾加上换行标志,这样输入和输出的字符串就会是同样的样式:

>>> a='''\  #这里的\是转行标志
    p
    y
    t
    h
    o
    n
'''

>>> a  #字符串的实际内容
'\tp\n\ty\n\tt\n\th\n\to\n\tn\n'

>>> print a  #print结果同输入一样
    p
    y
    t
    h
    o
    n