Storing a function

Gabriel Genellina gagsl-py2 at yahoo.com.ar
Sun May 25 20:16:39 EDT 2008


En Sun, 25 May 2008 18:00:12 -0300, Kuros <kurosknight at gmail.com> escribió:

> Hi,
> Hoping I could get some help with a python question.
>
> I want to be able to store the code for a single function in a .py file,
> such as:
>
> def test():
>     print "Test"
>
> From within a Python script, I would like to be able to get a handler so I
> can do something like:
>
> handler.test()

The "handler" is called a "module" and is created from the .py file by using import...

> I want to be able to store the handlers in a blob in a SQLite DB.

So store the .py file...

> Essentially, I want to store a compiled version of a function. I have tried
> using compile() and exec, and while it sort of works, it seems to import the
> code into the global namespace. I can do:
>
> x = compile(file.read(), "<x>", 'exec')
> exec x
> test()
>
> and it calls test, but I may have several functions with the same name, all
> read from different files. So I need to be able to do handler.test().

If you don't want to store the .py, store the compiled module .pyc
If you still want to create and manage your own fake version of modules, use an explicit namespace:

ns = {}
compiled = compile(...)
exec compiled in ns
test = ns['test']
test()

-- 
Gabriel Genellina




More information about the Python-list mailing list