This doesn't address the fact no one actually needs it. But if we WANTED a sublocal() context manager, we could spell it something like this:
In [42]: @contextmanager ...: def sublocal(**kws): ...: _locals = locals().copy() ...: _globals = globals().copy() ...: for k, v in kws.items(): ...: if k in locals(): ...: exec(f"locals()['{k}'] = {v}") ...: elif k in globals(): ...: exec(f"globals()['{k}'] = {v}") ...: yield ...: locals().update(_locals) ...: globals().update(_globals) ...: In [43]: a = 42 In [44]: with sublocal(a=43): ...: showa() ...: 43 In [45]: showa() 42 In [46]: with sublocal(): ...: a = 41 ...: showa() ...: 41 In [47]: showa() 42 On Sun, Apr 29, 2018 at 4:20 PM, Tim Peters <tim.pet...@gmail.com> wrote: > [Ethan Furman <et...@stoneleaf.us>] > > If we need a sublocal scope, I think the most Pythonic* route to have it > > would be: > > > > with sublocal(): > > blah blah > > > > As covered most recently in an exchange with Tim Delaney, best I can > tell absolutely nobody has wanted that. By "sublocal scope" they > don't mean a full-fledged new scope at all, but a kind of limited > "shadowing" of a handful of specific, explicitly given names. It acts > like a context manager, if there were a way to clearly spell > -- Keeping medicines from the bloodstreams of the sick; food from the bellies of the hungry; books from the hands of the uneducated; technology from the underdeveloped; and putting advocates of freedom in prisons. Intellectual property is to the 21st century what the slave trade was to the 16th.
_______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/