私はPython 3.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')
>>>
アップデートで動作します。その理由は、ドキュメントに記載されています...
What’s New In Python 3.3は言う:
10進数
問題7652 - 高速ネイティブ10進算術を統合します。 CモジュールとlibmpdecがStefan Krahによって書かれました。古いPythonの3.2はないながら...
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 *
:decimal.py
ファイルを比較する場合
、彼らは最初は同じように見えるかもしれませんが、Pythonの3.3バージョンは、ほぼ最後に次のコードが含まれていますない。バイナリ_decimal
のインプリメンテーションをインポートできる場合、decimal.py
の古いインプリメンテーションは無視されます。バイナリモジュールは、Pythonコードデバッガを使用してデバッグすることはできません。
問題は、観察された動作をバグとみなすべきではないかどうかです。
これは価値がありますが、私はこれをPython 3.2.3で再現できません: 'import decimal; decimal.Decimal( "3"、None) 'はDecimal( '3')'を正常に返します。 –
[バグです](http://bugs.python.org/issue15783) – SilentGhost
@SilentGhost:このリンクには、モジュールのcアクセラレータバージョンのバグ(これが何であれ)が表示されています。これは私がpdbから何も得られない理由を説明することができます。しかし、純粋なpythonバージョンがほしいと指定することはできますか? –