Рубрики

str () против repr () в Python

str () и repr () оба используются для получения строкового представления объекта.

  1. Пример str ():

    s = 'Hello, Geeks.'

    print str(s)

    print str(2.0/11.0)

    Выход:

    Hello, Geeks.
    0.181818181818
  2. ,

  3. Пример repr ():

    s = 'Hello, Geeks.'

    print repr(s)

    print repr(2.0/11.0)

    Выход:

    'Hello, Geeks.'
    0.18181818181818182

Исходя из вышеприведенного вывода, мы можем увидеть, что если мы печатаем строку, используя функцию repr (), она печатает с парой кавычек, и если мы вычисляем значение, мы получаем более точное значение, чем функция str ().

Ниже приведены различия:

  • str () используется для создания выходных данных для конечного пользователя, а repr () в основном используется для отладки и разработки. Цель repr — быть однозначным, а str — читабельным . Например, если мы подозреваем, что у float есть небольшая ошибка округления, repr покажет нам, а str — нет.
  • repr () вычисляет «официальное» строковое представление объекта (представление, содержащее всю информацию об объекте ), а str () используется для вычисления «неформального» строкового представления объекта (представление, которое полезно для печати объект).
  • Оператор print и встроенная функция str () используют __str__ для отображения строкового представления объекта, а встроенная функция repr () использует __repr__ для отображения объекта.

Позвольте понять это на примере: —

import datetime

today = datetime.datetime.now()

  
# Печатает читаемый формат для объекта даты и времени

print str(today)

  
# печатает официальный формат объекта даты и времени

print repr(today)     

Выход:

2016-02-22 19:32:04.078030
datetime.datetime(2016, 2, 22, 19, 32, 4, 78030)

str () отображает сегодняшнюю дату так, чтобы пользователь мог понять дату и время.

repr () печатает «официальное» представление объекта даты и времени (значит, используя «официальное» строковое представление, мы можем реконструировать объект).

Как заставить их работать для наших собственных определенных классов?
Пользовательский класс также должен иметь __repr__, если нам нужна подробная информация для отладки. И если мы думаем, что было бы полезно иметь строковую версию для пользователей, мы создаем функцию __str__.

# Программа Python для демонстрации написания __repr__ и
# __str__ для пользовательских классов

  
# Пользовательский класс для представления комплексных чисел

class Complex:

  

    # Конструктор

    def __init__(self, real, imag):

       self.real = real

       self.imag = imag

  

    # Для вызова repr (). Печатает информацию об объекте

    def __repr__(self):

       return 'Rational(%s, %s)' % (self.real, self.imag)    

  

    # Для вызова str (). Печатает читабельную форму

    def __str__(self):

       return '%s + i%s' % (self.real, self.imag)    

  

  
# Программа драйвера для тестирования выше

t = Complex(10, 20)

  

print str(t)  # То же, что "print t"

print repr(t)

Выход:

10 + i20
Rational(10, 20)

Эта статья предоставлена Арпит Агарвал. Если вам нравится GeeksforGeeks и вы хотите внести свой вклад, вы также можете написать статью и отправить ее по почте на contrib@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по обсуждаемой теме

Рекомендуемые посты:

str () против repr () в Python

0.00 (0%) 0 votes