[Python-Dev] PEP 327: Decimal Data Type
Batista, Facundo
FBatista at uniFON.com.ar
Mon Feb 2 17:00:56 EST 2004
Michael Chermside wrote:
#- Imagine the following senario. I write some code which uses
#- Decimal, and which sets the context to get the desired rounding
#- behavior. Somewhere in my code I call a routine written by
#- somebody else... perhaps some library code... which also does
#- some calculations using Decimal.
This subject already has been discussed in c.l.p:
Emile van Sebille:
...from which I infer that Context exists in part to limit/round
calculated results. Even if it were possible for me, as a user of
Decimal, to set Context appropriately to achieve these ends, what
if I use a library that also changes Context? The integrity of my
calculations may be impacted.
Aahz:
That's correct. There needs to be a social convention that libraries
intended for use by other people *CANNOT* muck with Context, and if they
do so for their own internal calculations, they must save and restore
Context. You can probably find additional information about this in
Cowlishaw.
Emile van Sebille:
Enter the context stack.
Aahz:
Well, sure. And it won't be hard to add given that Decimal will already
need to track thread-specific Context. But modules changing Context
will still need to explicitly push and pop Context because usually you
will just want to replace the current Context.
Tim Peters:
They have another choice, because Guido had a brilliant idea: the
arithmetic operations in Eric's implementation are methods *of* a
context
object (because Guido suggested that). So a maximally robust library
doesn't *have* to change the thread context at all: it can create
whatever
private context object(s) it needs, and spell arithmetic as explicit
method
calls on its private context object(s), so that the default thread
context
object is neither consulted nor modified. This is very robust, and in
small
doses is quite bearable.
I don't have any problem to implement a context stack. But I think that it's
no clear to be useful, so I think it's better to go for the sure staff, and
when Decimal gets heavy use, if everybody agrees to add a context stack,
we'll go for it.
What do you think?
. Facundo
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
ADVERTENCIA
La información contenida en este mensaje y cualquier archivo anexo al mismo,
son para uso exclusivo del destinatario y pueden contener información
confidencial o propietaria, cuya divulgación es sancionada por la ley.
Si Ud. No es uno de los destinatarios consignados o la persona responsable
de hacer llegar este mensaje a los destinatarios consignados, no está
autorizado a divulgar, copiar, distribuir o retener información (o parte de
ella) contenida en este mensaje. Por favor notifíquenos respondiendo al
remitente, borre el mensaje original y borre las copias (impresas o grabadas
en cualquier medio magnético) que pueda haber realizado del mismo.
Todas las opiniones contenidas en este mail son propias del autor del
mensaje y no necesariamente coinciden con las de Telefónica Comunicaciones
Personales S.A. o alguna empresa asociada.
Los mensajes electrónicos pueden ser alterados, motivo por el cual
Telefónica Comunicaciones Personales S.A. no aceptará ninguna obligación
cualquiera sea el resultante de este mensaje.
Muchas Gracias.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.python.org/pipermail/python-dev/attachments/20040202/f934dc5e/attachment.html
More information about the Python-Dev
mailing list