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