我正在学习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.'
为什么第三句用双引号括起来,为什么其他用单引号?
答案 0 :(得分:2)
formatter
正在使用%r
,因此每个str
都会用引号打印。执行此操作的函数默认使用单引号作为分隔符,但如果它在字符串中看到单引号,并且字符串中没有双引号,则会切换为使用双引号作为分隔符。
例如,尝试:
print "%r" % '''This string has a ' and a " in it.'''
答案 1 :(得分:2)
您正在使用调用%r
方法的__repr__
。你似乎想要的是%s
而是调用__str__
方法。
在相关字符串中您已经有'
;这就是为什么repr()
在"
中引用它的原因。