Get a list of functions in a file
castironpi at gmail.com
Mon Dec 29 14:40:42 CET 2008
On Dec 29, 3:50 am, "Chris Rebert" <c... at rebertia.com> wrote:
> On Sun, Dec 28, 2008 at 11:26 PM, member Basu <b... at archlinux.us> wrote:
> > I'm putting some utility functions in a file and then building a simple
> > shell interface to them. Is their some way I can automatically get a list of
> > all the functions in the file? I could wrap them in a class and then use
> > attributes, but I'd rather leave them as simple functions.
> Assuming you've already imported the module as 'mod':
> func_names = [name for name in dir(mod) if callable(getattr(mod, name))]
> funcs = [getattr(mod, name) for name in dir(mod) if
> callable(getattr(mod, name))]
> Note that such lists will also include classes (as they too are
> callable). There are ways of excluding classes (and other objects that
> implement __call__), but it makes the code a bit more complicated.
No, not in general. It's a weakness of one of the strengths of
Python. For instance, if you define a function in a string, or return
one from another function, there's no way to get at it.
If you do want to import it, you can put any executable code inside an
'if __name__== "__main__"' block, so it won't get executed while
you're trying to index/catalog it.
If you're interested in something more hard-core, you might like the
'tokenize' module. And I think the pattern you're looking for is
'every "def" outside a string, and even some in one.'
P.S. Did not receive the original message on Google Groups.
More information about the Python-list