Просто набираем строку с последующим нажатием Enter:
>>> r'hello\"world'
'hello\\"world'
Получил не то, что ожидал. Я думал, что должна вызваться функция print(r'hello\"world') и распечатать строку hello\"world
Теперь так:
>>> print(r'hello\"world')
hello\"world
Получил то, что ожидал.
Что происходит в интерактивном режиме(>>>) после ввода строки и нажатия на Enter?
Ответ
Как при вызове print, так и при выводе в интерактивном режиме Python преобразует выражение в строку и выводит её на экран. Различия заключаются в том, что при этом вызываются различные методы преобразования. Если вы имеете понятие об ООП, то вот Вам небольшой пример:
class My:
def __str__(self):
return '__str__: Вызывается для print'
def __repr__(self):
return '__repr__: Вызывается в интерактивном режиме'
obj = My()
print(obj)
После запуска выведет: __str__: Вызывается для print
И далее, если в интерактивном режиме ввести сам объект:
>>> obj
__repr__: Вызывается в интерактивном режиме
И __repr__, и __str__ возвращают строку, которая попадает на экран.
И так происходит со всеми типами данных, в том числе и с Вашей строкой.
Таким образом:
>>> a = r'hello\"world'
>>> a #равносильно вызову print(a.__repr__())
'hello\\"world'
>>> print(a) #равносильно вызову print(a.__str__())
hello\"world
Комментариев нет:
Отправить комментарий