[Python-Dev] Passing compile(...,'exec') code to 'eval' (original) (raw)
Brett C. bac at OCF.Berkeley.EDU
Wed May 5 14:23:16 EDT 2004
- Previous message: [Python-Dev] Python 2.3.4 schedule
- Next message: [Python-Dev] Passing compile(...,'exec') code to 'eval'
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
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 "", line 1, in ? NameError: name 'x' is not defined [16425 refs] eval(compile("x = 1", "", "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
- Previous message: [Python-Dev] Python 2.3.4 schedule
- Next message: [Python-Dev] Passing compile(...,'exec') code to 'eval'
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]