On Fri, Aug 20, 2021 at 04:22:56PM +0100, Mark Shannon wrote: > Hi all, > > I have submitted PEP 667 as an alternative to PEP 558. > https://www.python.org/dev/peps/pep-0667
Specification has a code snippet: def test(): x = 1 l()['x'] = 2 l()['y'] = 4 l()['z'] = 5 y print(locals(), x) https://www.python.org/dev/peps/pep-0667/#id10 Wouldn't that attempt to resolve global y, rather than local y? Unless there is a change to the current behaviour of the compiler, I think you need to fool the compiler: if False: y = 0 # anywhere inside the function is okay Open Issues says: "there would be backwards compatibility issues when locals is assigned to a local variable or when passed to eval." https://www.python.org/dev/peps/pep-0667/#id24 Is that eval meant to be exec? Or both eval and exec? -- Steve _______________________________________________ Python-Dev mailing list -- python-dev@python.org To unsubscribe send an email to python-dev-le...@python.org https://mail.python.org/mailman3/lists/python-dev.python.org/ Message archived at https://mail.python.org/archives/list/python-dev@python.org/message/DZMWW3ROSXSNWONOHAARPDHWLBLVLEFH/ Code of Conduct: http://python.org/psf/codeofconduct/