2015-08-23 8 views
3

Я нахожусь на exercise 8 обучения Python Hard Way, и я не понимаю, почему определенные строки в функции 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

formatter использует %r, так что каждый str напечатан в кавычках. Функция, которая делает это по умолчанию, использует одинарные кавычки как разделитель, но если она видит одиночную кавычку в строке и не содержит двойных кавычек в строке, она переключается на использование двойных кавычек в качестве разделителя.

Например, попробуйте:

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

вы используете %r, который вызывает метод __repr__. то, что вы, кажется, хотите, это скорее %s, который вызывает метод __str__.

в строке, о которой идет речь, у вас уже есть '; вот почему repr() выдает его в ".

+0

Вопрос о том, почему цитаты разные, а не почему цитаты были там. –