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

Ответ 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"