Python the Hard Way – упражнение 6 -% r против% s

http://learnpythonthehardway.org/book/ex6.html

Zed, похоже, использует %r и %s здесь взаимозаменяемо, есть ли разница между ними? Почему бы просто не использовать %s все время?

Кроме того, я не был уверен, что искать в документации, чтобы найти дополнительную информацию об этом. Что конкретно обозначают %r и %s ? Форматирование строк?

7 Solutions collect form web for “Python the Hard Way – упражнение 6 -% r против% s”

Они называются операциями форматирования строк .

Разница между% s и% r заключается в том, что% s использует функцию str а% r использует функцию repr . Вы можете прочитать о различиях между str и repr в этом ответе , но для встроенных типов наибольшая разница на практике заключается в том, что для строк для строк есть кавычки и все специальные символы экранированы.

%r вызывает repr , в то время как %s вызывает str . Они могут вести себя по-разному для некоторых типов, но не для других: repr возвращает «печатное представление объекта», а str возвращает « красиво печатаемое представление объекта». Например, они различны для строк:

 >>> s = "spam" >>> print(repr(s)) 'spam' >>> print(str(s)) spam 

В этом случае представление представляет собой буквальное представление строки (которую интерпретатор Python может анализировать в объект str ), а str – это просто содержимое строки.

%s вызывает str() , тогда как %r вызывает repr() . Для получения дополнительной информации см. Раздел Разница между __str__ и __repr__ в Python

Ниже приведен краткий обзор предыдущих трех примеров кода.

 # 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 
  x = "example" print "My %s"%x My example print "My %r"%x My 'example' 

Это хорошо объяснено в приведенных выше ответах. Я попытался показать это на простом примере.

%s => строка

%r => точно так же, как и

Используя код в книге:

 my_name = 'Zed A. Shaw' print "Let's talk about %s." % my_name print "Let's talk about %r." % my_name 

мы получаем

 Let's talk about Zed A. Shaw. Let's talk about 'Zed A. Shaw'. 

Приведенный ниже код иллюстрирует разницу. То же самое значение печатается по-разному:

 x = "xxx" withR = "prints with quotes %r" withS = "prints without quotes %s" 
  • Python 3 TypeError: должен быть str, а не байтами с sys.stdout.write ()
  • Оператор python не является
  • youtube python api gdata.service. RequestError
  • Разделить словарь на 2 словаря
  • Не являются ли строки Python неизменяемыми?
  • Метод с переменным количеством объектов и список других аргументов
  • Python: «TypeError: __str__ возвращен не-строка», но все же печатает на выходе?
  • Связь между строковым модулем и str
  • Python - лучший язык программирования в мире.