在Python环境中查找所有定义的函数

时间:2013-06-18 18:31:25

标签: python function

是否有方法可以找到python环境中定义的所有函数?

例如,如果我有

def test:
   pass

some_command_here会返回test

5 个答案:

答案 0 :(得分:4)

您可以使用globals()获取文件全局范围内定义的所有内容,并使用inspect过滤您关注的对象。

[ f for f in globals().values() if inspect.isfunction(f) ]

答案 1 :(得分:4)

您可以使用inspect模块:

import inspect
import sys


def test():
    pass

functions = [name for name, obj in inspect.getmembers(sys.modules[__name__], inspect.isfunction)]
print functions

打印:

['test']

答案 2 :(得分:2)

使用globals()types.FunctionType

>>> from types import FunctionType
>>> functions = [x for x in globals().values() if isinstance( x, FunctionType)]

演示:

from types import FunctionType
def func():pass
print [x for x in globals().values() if isinstance(x, FunctionType)]
#[<function func at 0xb74d795c>]

#to return just name
print [x for x in globals().keys() if isinstance(globals()[x], FunctionType)]
#['func']

答案 3 :(得分:1)

>>> def test():
...     pass
...
>>> [k for k, v in globals().items() if callable(v)]
['test']

答案 4 :(得分:1)

首先,我们将创建我们想要找到的test函数。

def test():
    pass

接下来,我们将创建您想要的some_command_here函数。

def some_command_here():
    return filter(callable, globals().values())

最后,我们调用新函数并将过滤器转换为tuple以供查看。

tuple(some_command_here())

注意:这将搜索当前的全局命名空间并返回任何可调用的内容(而不仅仅是函数)。


示例:

>>> def test():
    pass

>>> def some_command_here():
    return filter(callable, globals().values())

>>> tuple(some_command_here())
(<function test at 0x02F78660>,
 <class '_frozen_importlib.BuiltinImporter'>,
 <function some_command_here at 0x02FAFDF8>)
>>>