On Sat, Oct 14, 2017 at 9:53 PM, M.-A. Lemburg firstname.lastname@example.org 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:
try: def foo(): raise RuntimeError except RuntimeError: print("this is not going to execute, because Python doesn't work that way") foo()
-- Nathaniel J. Smith -- https://vorpus.org