Posso confermare il comportamento per Python 3.3. In qualche modo rileva che hai passato il None
come contesto e non gli piace (anche se è documentato come il valore predefinito).
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')
Aggiornamento: Ma funziona con 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')
>>>
Update: La ragione può essere trovata nel doc ...
What’s New In Python 3.3 dice:
decimale
numero 7652 - integrare l'aritmetica decimale nativa veloce. C-module e libmpdec scritto da Stefan Krah.
Quando si confrontano i file decimal.py
, possono sembrare lo stesso in un primo momento, ma la versione di Python 3.3 contiene il seguente codice quasi alla fine:
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 *
... mentre i più anziani Python 3.2 fa non. Si dice che se è possibile importare l'implementazione binario _decimal
, l'implementazione precedente da decimal.py
viene ignorata. E il modulo binario non può essere debugato usando il debugger del codice Python.
La domanda è se il comportamento osservato non deve essere considerato un bug.
Per quello che vale, non riesco a riprodurlo in Python 3.2.3: 'import decimal; decimal.Decimal ("3", None) 'restituisce con successo' Decimal ('3') '. –
[È un bug] (http://bugs.python.org/issue15783) – SilentGhost
@SilentGhost: Vedo nel collegamento che si tratta di un bug nella versione acceleratore c del modulo (qualunque esso sia). Questo può spiegare perché non ottengo nulla da pdb. Ma posso specificare che voglio la versione Python pura? –