【发布时间】:2012-11-02 11:31:01
【问题描述】:
我在十进制模块中发现了一个奇怪的行为。 Decimal 类的“签名”是:
Decimal(value='0', context=None)
所以,我想我可以这样做:Decimal('3', None)。但是这段代码在 python3.3 中引发了 TypeError 异常,但在 python2.7 中没有。
在我的调查中,我尝试使用 pdb:pdb.set_trace("Decimal('3', None)") 进行调试,但没有任何反应!只要我输入s,就会引发同样的异常。
谁能解释这些行为的原因?
【问题讨论】:
-
对于它的价值,我无法在 Python 3.2.3 下重现这个:
import decimal; decimal.Decimal("3", None)成功返回Decimal('3')。 -
@SilentGhost:我在链接中看到这是模块的 c 加速器版本中的错误(无论这是什么)。这可以解释为什么我从 pdb 中一无所获。但是我可以指定我想要纯 python 版本吗?
-
@GTux:这将是一个黑客。你不能只检查你传递给构造函数的内容吗?
-
@SilentGhost:这就是我正在做的。我想学习一个新技巧:)
标签: python-3.3