3

我正在学习 Python the Hard Way 的练习 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.'

为什么第三句用双引号,为什么其他句子用单引号?

4

2 回答 2

2

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

例如,尝试:

print "%r" % '''This string has a ' and a " in it.'''
于 2015-08-23T18:54:49.203 回答
2

您正在使用%rwhich 调用该__repr__方法。您似乎想要的是%s调用该方法的__str__方法。

在有问题的字符串中,您已经有一个'; 这就是为什么repr()给出它引用的原因"

于 2015-08-23T18:55:31.103 回答