Страницы

Поиск по вопросам

пятница, 12 апреля 2019 г.

Что происходит в интерактивном режиме (>>>) если ввести строку (или идентификатор проинициализированной переменной) и нажать Enter ?

Просто набираем строку с последующим нажатием 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

Комментариев нет:

Отправить комментарий