Python3.3の動作を確認できます。どういうわけかNone
、コンテキストとして渡されたことを検出し、それを気に入らない(デフォルト値として文書化されている場合でも)。
Python 3.3.0 (v3.3.0:bd8afb90ebf2, Sep 29 2012, 10:57:17) [MSC v.1600 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import decimal
>>> decimal.Decimal('3', None)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: optional argument must be a context
>>> decimal.Decimal('3')
Decimal('3')
更新:しかし、それは3.2.3で動作します
Python 3.2.3 (default, Apr 11 2012, 07:12:16) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import decimal
>>> decimal.Decimal('3', None)
Decimal('3')
>>>
更新:理由はドキュメントで見つけることができます...
Python3.3の新機能は次のとおりです。
10進数
問題7652-高速ネイティブ10進演算を統合します。StefanKrahによって作成されたCモジュールとlibmpdec。
ファイルを比較するdecimal.py
と、最初は同じように見えるかもしれませんが、Python 3.3バージョンには、ほぼ最後に次のコードが含まれています。
try:
import _decimal
except ImportError:
pass
else:
s1 = set(dir())
s2 = set(dir(_decimal))
for name in s1 - s2:
del globals()[name]
del s1, s2, name
from _decimal import *
...古いPython3.2はそうではありません。バイナリ_decimal
実装をインポートできれば、fromの古い実装decimal.py
は無視されるということです。また、バイナリモジュールはPythonコードデバッガーを使用してデバッグすることはできません。
問題は、観察された動作をバグと見なすべきではないかどうかです。