【问题标题】:Why does printing the __repr__ of an integer require parenthesis? [duplicate]为什么打印整数的 __repr__ 需要括号? [复制]
【发布时间】:2017-07-05 14:01:48
【问题描述】:

对于字符串文字,比如说foo,如果我想通过调用这个字符串的__repr__ 来获得它的repr,我要做的就是:

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

这也有效:

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

floats 也是这样:

>>> 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'

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

【问题讨论】:

  • 因为 1. 是浮点数 1.0 吗?为了避免混淆?
  • 因为1. 是一个浮点常量。

标签: python


【解决方案1】:

你也可以

1 .__repr__()

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

【讨论】:

  • 哦酷....关于如何规避的额外信息很高兴知道。
【解决方案2】:

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

【讨论】:

  • 我找了一个骗子!用他们的措辞猜想找到他们并不容易。感谢您的回答。
  • 复制本身不是问题,它们有时甚至可以帮助人们使用完全不同的关键字找到答案。现在我知道存在重复项(否则我当然不会回答!)
【解决方案3】:

在点之前放一个空格:

>>> 1 .__repr__()
'1'

消除文字 int 1 与文字“部分”浮点 1. 的歧义。

【讨论】:

  • 你的回答有错字吗? :) 感谢您的信息!
  • 是的,感谢您指出这一点。这是一个复制粘贴错误。固定。
猜你喜欢
  • 2015-08-07
  • 1970-01-01
  • 2015-11-01
  • 2017-09-08
  • 2014-08-09
  • 1970-01-01
  • 2017-11-07
  • 2011-10-12
  • 1970-01-01
相关资源
最近更新 更多