В Python 2.x использование обратных галочек для получения десятичной строки из объекта int - это ужасно? - PullRequest
2 голосов
/ 17 мая 2010

В Python 2.x использование обратных галочек для получения десятичной строки из объекта int имеет значение Ужасно ? Потому что обратные помехи repr(), а не str()? Я заметил, что когда я отвечаю на этот вопрос.

В исходном коде Python они имеют одинаковую функцию в исходном коде Python, intobject.c

(reprfunc)int_to_decimal_string,            /* tp_repr */
....
(reprfunc)int_to_decimal_string,            /* tp_str */

Что вы думаете?

Ответы [ 3 ]

7 голосов
/ 17 мая 2010

Ну, я бы не сказал, что это "ужасно", но я чувствую, что это неправильно по крайней мере по четырем причинам:

  1. str(my_number) заявляет о ваших намерениях более четко, чем окружающие my_number обратными чертами. (См. «Количество читабельности» в Дзэн Python ).

  2. Реализация Python на C является лишь одной из возможных реализаций; есть Jython, IronPython, PyPy и т. д., и если в спецификации Python где-то нет явного утверждения, что repr() и str() одинаковы для целочисленных объектов, я бы не стал полагаться на такое поведение.

  3. Обратные галочки исчезли в Python 3.x.

  4. Если ваш номер настолько велик, что он не может быть представлен int, Python автоматически переводит его в длинное целое число, и для этого repr() и str() отличаются.

См. Этот пример:

>>> x = 1234567890
>>> y = x ** 3
>>> `y`
'1881676371789154860897069000L'
>>> str(y)
'1881676371789154860897069000'
2 голосов
/ 17 мая 2010

Да. Использование кавычек для чего-либо ужасно.

У вас есть str(i), у вас есть '%d' % i, у вас есть .format(i); если вы хотите repr, то скажите прямо с repr() или %r или чем-то еще.

Никогда не было веской причины использовать обратные пометки, они просто делали код менее читаемым и намного сложнее анализировать. Они пропали в Python 3.

0 голосов
/ 17 мая 2010

2.X: использование обратных галочек для чего-либо ужасно. Используйте repr () или str (), как требуется.

3.X: спины исчезли! Три ура !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...