On Thu, Sep 17, 2020 at 8:33 PM Alexis Masson
On Fri, Sep 18, 2020 at 2:13 AM Alexis Masson
wrote: This, in addition with locals().update(_), feels much better to me. Furthermore, it would allow other string-like classes, such as bytes or bytearray, to use that feature.
But locals().update() isn't a supported operation, except in the situation where locals() is globals(). So what you're suggesting would work fine in the REPL but not in any production usage.
ChrisA
That surprises me. I put a quick test to check :
def f() : print(locals()) locals().update(dict(a=3)) print(locals())
f()
prints :
================= RESTART: ****/test.py ================ {} {'a': 3}
So maybe the specs don't force it, but under the current implementation, it seems to work.
No it doesn't, try `print(a)`.
I agree that it's bad practice anyway; a correct solution to the original question might surely involve something akin to :for key, value in parsed.items() :
for key, value in parsed.items() :
exec(f"{key} = {value}")
This has the same problem for the same underlying reasons, it won't work in a function either.