python - 在 Python 2.x 中,使用反引号从 int 对象获取十进制字符串很糟糕吗?

标签 python python-2.x backticks

在 Python 2.x 中,使用反引号从 int 对象中获取十进制字符串是可怕的吗? 因为反引号是repr(),而不是str()?我注意到当我回答 this 时问题。

在 Python 源代码中,它们在 Python 源代码中具有相同的功能,intobject.c

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

你怎么看?

最佳答案

嗯,我不会说它“可怕”,但我觉得至少有四个原因是不对的:

  1. str(my_number) 比用反引号包围 my_number 更清楚地说明您的意图。 (请参阅 the Zen of 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'

关于python - 在 Python 2.x 中,使用反引号从 int 对象获取十进制字符串很糟糕吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2848090/

相关文章:

python - Pandas 数据框和附加对象转换为 JSON

python - 如何控制子采样以使 xgb.cv 和 cross_validate 产生相同的结果?

python - 'pythonic' 多了 'not'

mysql - 如何在 CodeIgniter 中添加不带引号的 null 条件?

Python 一个衬垫用于未排序列表的多个平均值

Python:列表、容器和排序

python - 机械化可以完全替换为请求[python]

python - Round Function 在 v2.6.6 中不起作用,但在 v3.4.2 中起作用

mysql - 在字段名称周围使用反引号

javascript - 如何在 ${variable} 的每个实例上拆分 ``(反引号字符串)