为什么打印整数的__repr__需要括号?

时间:2017-07-05 14:01:49

标签: python

对于字符串文字,比如说foo,如果我想通过调用此字符串的__repr__来获取它,那么我所做的就是:

>>> 'foo'.__repr__()
"'foo'"

这也有效:

>>> ('foo').__repr__()
"'foo'"

float s的情况相同:

>>> 1.0.__repr__()
'1.0'
>>> (1.0).__repr__()
'1.0'

但是当谈到整数时,它并不完全相同。试图在没有先应用括号的情况下调用__repr__会引发错误

>>> 1.__repr__()
  File "<stdin>", line 1
    1.__repr__()
             ^
SyntaxError: invalid syntax

但是,当我应用括号时,它可以工作:

>>> (1).__repr__()
'1'

那么,为什么整数需要括号?

3 个答案:

答案 0 :(得分:3)

1.__repr__与浮点解析冲突(例如:1.0),因此您必须插入括号以使python理解该点适用于1对象。

答案 1 :(得分:3)

或者,你可以

1 .__repr__()

问题是1.是一个浮点数。所以你必须在1.之间加一个空格或括号。

答案 2 :(得分:3)

只需在点前加一个空格:

>>> 1 .__repr__()
'1'

从文字“部分”浮动1中消除文字int 1.的歧义。