[Python-ideas] PEP draft: context variables

Nathaniel Smith njs at pobox.com
Sun Oct 15 01:49:10 EDT 2017

On Sat, Oct 14, 2017 at 9:53 PM, M.-A. Lemburg <mal at egenix.com> wrote:
> I have a hard time seeing the advantage of having a default
> where the context at the time of execution is dependent on
> where it happens rather than where it's defined.
> IMO, the default should be to use the context where the line
> was defined in the code, since that matches the intuitive
> way of writing and defining code.

Of course, that's already the default: it's now regular variables and
function arguments work. The reason we have forms like 'with
decimal.localcontext', 'with numpy.errstate' is to handle the case
where you want the context value to be determined by the runtime
context when it's accessed rather than the static context where it's
accessed. That's literally the whole point.

It's not like this is a new and weird concept in Python either -- e.g.
when you raise an exception, the relevant 'except' block is determined
based on where the 'raise' happens (the runtime stack), not where the
'raise' was written:

    def foo():
        raise RuntimeError
except RuntimeError:
    print("this is not going to execute, because Python doesn't work that way")


Nathaniel J. Smith -- https://vorpus.org

More information about the Python-ideas mailing list