In preparations for my coding my thesis I have been trying to figure out how a local variable could be assigned to without me explicitly knowing during compilation. Obviously 'exec' can. But I wasn't sure about 'eval'. Reading the docs, I didn't think it could since 'eval', when taking a string, only evaluates expressions. But what about code objects? The docs say, "The code object must have been compiled passing 'eval' as the kind argument". But I didn't read that when I started testing. This is when I discovered you *can* pass in something using 'compile' with the kind argument of "exec":: >>> x Traceback (most recent call last): File "<stdin>", line 1, in ? NameError: name 'x' is not defined [16425 refs] >>> eval(compile("x = 1", "<string>", "exec")) [16426 refs] >>> x 1 Is this a bug, or are the docs wrong? I am hoping it is the former since if it is the latter my thesis just got a big caveat pasted into it about how 'eval' can cause problems and invalidate the type inferencing in irreparable ways. -Brett
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4