用双引号和单引号打印

时间:2015-08-23 18:50:06

标签: python quotes double-quotes single-quotes

我正在学习Python的艰难之路的exercise 8,我不明白为什么print函数中的某些行用单引号或双引号打印。

该计划内容如下:

formatter = "%r %r %r %r"

print formatter % (
"I had this thing.",
"That you could type up right.",
"But it didn't sing.",
"So I said goodnight."
)

输出如下:

'I had this thing.' 'That you could type up right.' "But it didn't sing." 'So I said goodnight.'

为什么第三句用双引号括起来,为什么其他用单引号?

2 个答案:

答案 0 :(得分:2)

formatter正在使用%r,因此每个str都会用引号打印。执行此操作的函数默认使用单引号作为分隔符,但如果它在字符串中看到单引号,并且字符串中没有双引号,则会切换为使用双引号作为分隔符。

例如,尝试:

print "%r" % '''This string has a ' and a " in it.'''

答案 1 :(得分:2)

您正在使用调用%r方法的__repr__。你似乎想要的是%s而是调用__str__方法。

在相关字符串中您已经有';这就是为什么repr()"中引用它的原因。