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.
You shouldn't do this, and if you do, you will pay for your sin in a special kind of hell set aside for people who take the implementation as the spec. It's hard to detect such undefined usage without making eval() (and possibly everything) slower though. --Guido van Rossum (home page: http://www.python.org/~guido/)