каково значение %r в Python

из чего значение %r в следующем утверждении?

print '%r' % (1)

Я думаю, что услышал о %s, %d, и %f но никогда не слышал об этом.

62
задан 1 March 2010 в 10:17

3 ответа

Различие между %r и %s, %r вызовы repr() метод и %s вызовы str() метод. Оба из них являются встроенными функциями Python.

repr() метод возвращает печатаемое представление данного объекта. str() метод возвращает "неофициальное" или приятно печатаемое представление данного объекта.

На простом языке, что str() делает метод, распечатать результат способом, который конечный пользователь хотел бы видеть:

name = "Adam"
str(name)
Out[1]: 'Adam'

repr() метод распечатал бы или показал бы то, на что на самом деле похож объект:

name = "Adam"
repr(name)
Out[1]: "'Adam'"
2
ответ дан 31 October 2019 в 14:03
%s <=> str
%r <=> repr

%r вызовы repr() на объекте, и вставляет получившую строку, возвращенную __repr__.

строка, возвращенная __repr__, должна быть однозначной и, если это возможно, соответствовать исходному коду, необходимому для воссоздания представленного объекта.

А быстрый пример:

class Foo:

    def __init__(self, foo):
        self.foo = foo


    def __repr__(self):
        return 'Foo(%r)' % self.foo

    def __str__(self):
        return self.foo


test = Foo('Text')

Так,

in[1]: test
Out[1]: Foo('Text')


in[2]: str(test)
Out[2]: 'Text'
1
ответ дан 31 October 2019 в 14:03

Добавление к ответам, данным выше, '%r', может быть полезным в сценарии, где у Вас есть список с типом гетерогенных данных. Скажем, мы имеем list = [1, 'apple' , 2 , 'r','banana'], Очевидно, в этом случае с помощью '%d', или '%s' вызвал бы ошибку. Вместо этого мы можем использовать '%r' для печати всех этих значений.

3
ответ дан 31 October 2019 в 14:03

Другие вопросы по тегам:

Похожие вопросы: