YOU*_*YOU 2 python python-2.x backticks
在Python 2.x中,使用反引号从int对象获取十进制字符串是可怕的吗?因为反推是repr(),不是str()吗?当我回答这个问题时,我注意到了.
在Python源代码中,它们在Python源代码中具有相同的功能,即intobject.c
(reprfunc)int_to_decimal_string, /* tp_repr */
....
(reprfunc)int_to_decimal_string, /* tp_str */
Run Code Online (Sandbox Code Playgroud)
你怎么看?
好吧,我不会说这是"可怕的",但我觉得它至少有四个原因是不对的:
str(my_number)my_number用反引号更清楚地表明你的意图.(参见Python的Zen中的 "可读性计数" ).
在C中实现Python只是一种可能的实现; 有Jython,IronPython,PyPy等等,除非在Python规范中有一个显式语句,repr()并且str()对于整数对象是相同的,我不会依赖于这种行为.
反引号在Python 3.x中消失了.
如果你的数字太大而无法用a来表示,那么intPython会自动将它提升为一个长整数,为此,repr()它会str()有所不同.
看这个例子:
>>> x = 1234567890
>>> y = x ** 3
>>> `y`
'1881676371789154860897069000L'
>>> str(y)
'1881676371789154860897069000'
Run Code Online (Sandbox Code Playgroud)