Python the Hard Way - упражнение 6 -% r против% s
http://learnpythonthehardway.org/book/ex6.html
Zed, по-видимому, использует %r
и %s
здесь взаимозаменяемо, есть ли разница между ними? Почему бы просто не использовать %s
все время?
Кроме того, я не был уверен, что искать в документации, чтобы найти дополнительную информацию об этом. Что называется %r
и %s
? Форматирование строк?
Ответы
Ответ 1
Они называются операции форматирования строк.
Разница между% s и% r заключается в том, что% s использует функцию str
, а% r использует функцию repr
. Вы можете прочитать о различиях между str
и repr
в этом ответе, но для встроенных типов наибольшая разница на практике заключается в том, что repr
для строки включают в себя кавычки и все специальные символы экранированы.
Ответ 2
%r
вызывает repr
, а %s
вызывает str
. Они могут вести себя по-разному для некоторых типов, но не для других: repr
возвращает "печатное представление объекта", а str
возвращает "красиво отображаемое представление объекта". Например, для строк они различны:
>>> s = "spam"
>>> print(repr(s))
'spam'
>>> print(str(s))
spam
В этом случае repr
является литеральным представлением строки (которую интерпретатор Python может анализировать в объект str
), а str
- это просто содержимое строки.
Ответ 3
Ниже приведен краткий обзор предыдущих трех примеров кода.
# First Example
s = 'spam'
# "repr" returns a printable representation of an object,
# which means the quote marks will also be printed.
print(repr(s))
# 'spam'
# "str" returns a nicely printable representation of an
# object, which means the quote marks are not included.
print(str(s))
# spam
# Second Example.
x = "example"
print ("My %r" %x)
# My 'example'
# Note that the original double quotes now appear as single quotes.
print ("My %s" %x)
# My example
# Third Example.
x = 'xxx'
withR = ("Prints with quotes: %r" %x)
withS = ("Prints without quotes: %s" %x)
print(withR)
# Prints with quotes: 'xxx'
print(withS)
# Prints without quotes: xxx
Ответ 4
%s
вызывает str()
, тогда как %r
вызывает repr()
. Подробнее см. Разница между __str__ и __repr__ в Python
Ответ 5
x = "example"
print "My %s"%x
My example
print "My %r"%x
My 'example'
Это хорошо объяснено в приведенных выше ответах. Я попытался показать это на простом примере.
Ответ 6
%s
= > строка
%r
= > точно так же, как
Используя код в книге:
my_name = 'Zed A. Shaw'
print "Let talk about %s." % my_name
print "Let talk about %r." % my_name
получаем
Let talk about Zed A. Shaw.
Let talk about 'Zed A. Shaw'.
Ответ 7
Приведенный ниже код иллюстрирует разницу. То же самое значение печатается по-разному:
x = "xxx"
withR = "prints with quotes %r"
withS = "prints without quotes %s"