最近没有找到实际的需求,便在网上搜罗,发现一个Python的小tips。

单引号(')与双引号(")以及连续三个单引号(''')的区别,在此记录以便查看。

这就开始:

为了方便,在此约定:单引号即',双引号即",三引号即'''。


直接上例说明:

例子1:打印出I'm doing my homework:

one1 = 'I\'m doing my homework'   ##单引号
two1 = "I'm doing my homework"    ##双引号
three1 = '''I'm doing my homework'''  ##三引号

print one1
print two1
print three1

看一下例子1的输出:

I'm doing my homework
I'm doing my homework
I'm doing my homework



这个例子可以看到,这三种引号都是可以做string类型的引用的。

区别呢?


区别1:例子1可以看到,使用单引号(')引用字符串时,用到了转义字符(\')来表示字符串里的单引号('),而使用双引号(")与三引号(''')没有使用转义字符;区别2:例子1也可以看到,使用双引号(")引用字符串时,对字符串里的单引号(')可以不用转义字符,解析器可以自动识别,那反过来也成立(用单引号引用双引号字符时,也可以不用转义字符);

再看例子2:

one2_1 = 'I\'m doing my homework'  ##单引号引用单引号
one2_2 = 'I"m doing my homework'  ##单引号引用双引号
two2_1 = "I'm doing my homework"  ##双引号引用单引号
two2_2 = "I\"m doing my homework"  ##双引号引用双引号
print one2_1
print one2_2
print two2_1
print two2_2

例子2结果:

I'm doing my homework
I"m doing my homework
I'm doing my homework
I"m doing my homework

区别3:三引号内的换行可以直接输出,而双引号与单引号直接换行会报错,而要实现换行输出的话需要用转移字符。

先看一个例子3:

one3 = 'I\'m \ndoing \nmy \nhomework'  ##转义字符换行
two3 = "I\'m \ndoing \nmy \nhomework"  ##转义字符换行
three3 = '''I\'m  ##不用转义字符换行,而是直接回车,并且可以添加注释
doing
my
homework'''
print one3
print two3
print three3




例子3结果:

I'm 
doing 
my 
homework
I'm 
doing 
my 
homework
I'm
doing
my
homework



可以看到,如果字符串里有换行的话,单引号与双引号需要使用换行转义字符,而使用三引号可以直接回车换行,不需要使用转义字符,并且在三引号的行末也可以添加(#)注释



PS:Python里提供了另外一种通用的代码换行续写符号\,使用这个符号,可以在代码里把长长一行拆开分成两行写,例如:

str1 = I\'m doing \
my homework'

print \
      str1
print 1 + 2 + 3 + 4 + \
      5 + 6 + 7 + 8</span>


输出结果:

I'm doing my homework
36


可以看到(\)可以看作是代码里拆行分行操作。