是否有方法可以找到python环境中定义的所有函数?
例如,如果我有
def test:
pass
some_command_here
会返回test
答案 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>)
>>>