2017-07-05 56 views
2

对于一个字符串,说foo,如果我想获得它的再版通过调用该字符串的__repr__,所有我做的是:为什么打印一个整数的__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' 

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

+0

因为1.是浮点数1.0吗?所以为了避免混淆? –

+0

因为'1.'是一个浮点常量。 – ForceBru

回答

3

或者,您可以

1 .__repr__() 

的问题是,1.是一个浮点数。因此,您必须在1.之间有空格或括号。

+0

哦很酷....那如何规避额外的一点是很高兴知道的。 –

3

1.__repr__与浮点解析冲突(例如:1.0),所以你必须插入括号才能让python明白这个点适用于1对象。

+0

我找了一个dups!猜猜用他们的措辞找到他们并不容易。谢谢回答。 –

+0

dups本身并不是一个问题,他们甚至有时帮助人们使用完全不同的关键词找到答案。现在我意识到重复存在(或者我当然不会回答!) –

3

只要把空间点前:

>>> 1 .__repr__() 
'1' 

,以消除歧义从文字“部分”浮1.字面INT 1

+0

你的答案中有错字吗? :) 谢谢(你的)信息! –

+0

是的,谢谢你指出这一点。这是一个复制粘贴错误。固定。 –

相关问题