exec(code) not allowing import on top level?

Gary Herron gherron at islandtraining.com
Tue Jul 29 00:17:55 EDT 2008


Peter Teuben wrote:
>
> if I define a simple string code, with the following contents:
>
> import math
> def foo(x):
>   return math.sqrt(x)

What?  You have not told us something important here.  First, that code 
won't fail because it does not even execute the function foo -- it just 
defines it.    Second, if I exend your string with one more line 
"foo(123)" to actually execute the code, it still works as expected.

So let's try this again...  and this time please please also show us the 
full text of the error message.

Gary Herron


>
> and i run it using exec(code) in python, math is not known. But when I
> recode the string as:
>
> def foo(x):
>   import math
>   return math.sqrt(x)
>
> it works fine. That seemed like an inconsistency, since it works
> fine otherwise, as expected. It's easy to work around, but
> just odd to find this out.
>
> thanks
>
>     peter
> -- 
> http://mail.python.org/mailman/listinfo/python-list




More information about the Python-list mailing list