Двойные кавычки в строчном представлении

Этот фрагмент:

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.'

Почему "But it didn't sing." попал в двойные кавычки, когда остальные три элемента были в одинарных кавычках?

(Этот код взят из Learn Python the Hard Way Exercise 8.)

Ответ 1

Python умный; он будет использовать двойные кавычки для строк, которые содержат одиночные кавычки при создании представления, чтобы минимизировать escape-последовательности:

>>> 'no quotes'
'no quotes'
>>> 'one quote: \''
"one quote: '"

Добавьте туда двойную кавычку, и она вернется к одинарным кавычкам и сбежит с какими-либо одиночными кавычками:

>>> 'two quotes: \'\"'
'two quotes: \'"'