On Mon, 5 Dec 2022 at 06:24, David Mertz, Ph.D. <david.me...@gmail.com> wrote: > > On Sun, Dec 4, 2022, 2:08 PM Chris Angelico <ros...@gmail.com> wrote: >> >> You're not the first to try to use globals() for this, but it means that the >> context manager works ONLY at top-level. > > > True. I know that. But if you're inside a function, you already have scope > containment, so the issue feels like "so what?" >
Sure. Notably, though, it also only works at the exact SAME top-level that it was defined at, unless you mess with introspection. And, of course, it still can't shadow variables, which really makes the whole concept of scoping rather meaningless - like using "var" deep inside a JavaScript function. > But doh! I always forget about which way the locals() / globals() mutability > thing goes. A regular del without exec is better, of course. Fair enough! I think the Py2 exec statement was a bit different, with some weird abilities to mutate the local scope, but in Py3 it's a lot easier to reason about - it just takes whatever dictionary you pass it, and mutates that. So it actually wouldn't make a difference to the mutability question - I think. There might be execptions, I mean exceptions. ChrisA _______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-le...@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/B2PH5WVXKKFTJUDTXT3PGQRDQYX25CPY/ Code of Conduct: http://python.org/psf/codeofconduct/