[Python-Dev] PEP 550 v4
Ethan Furman
ethan at stoneleaf.us
Thu Sep 7 09:05:58 EDT 2017
On 09/07/2017 03:37 AM, Greg Ewing wrote:
> If I understand correctly, instead of using a context
> manager, your fractions example could be written like
> this:
>
> def fractions(precision, x, y):
> ctx = decimal.getcontext().copy()
> decimal.setcontext(ctx)
> ctx.prec = precision
> yield MyDecimal(x) / MyDecimal(y)
> yield MyDecimal(x) / MyDecimal(y ** 2)
>
> and it would work without leaking changes to the decimal
> context, despite the fact that it doesn't use a context
> manager or do anything else to explicitly put back the
> old context.
The disagreement seems to be whether a LogicalContext should be created implicitly vs explicitly (or opt-out vs opt-in).
As a user trying to track down a decimal context change not propagating, I would not suspect the above code of
automatically creating a LogicalContext and isolating the change, whereas Greg's context manager version is abundantly
clear.
The implicit vs explicit argument comes down, I think, to resource management: some resources in Python are
automatically managed (memory), and some are not (files) -- which type should LCs be?
--
~Ethan~
More information about the Python-Dev
mailing list