python 如何获取模块内的所有函数

python 如何获取模块内的所有函数

作者:William Gu发布时间:2026-01-14阅读时长:0 分钟阅读次数:7

用户关注问题

Q
如何查看Python模块中定义的所有函数?

我想了解一个Python模块中包含哪些函数,有什么方法可以列出模块内所有的函数名称?

A

使用内置函数dir()和inspect模块来获取模块的函数列表

可以使用Python内置的dir()函数列出模块中的所有成员,然后结合inspect模块的inspect.isfunction()函数筛选出函数。例如,导入模块后,使用列表推导式过滤出函数名:

import inspect
import your_module

functions = [name for name, obj in inspect.getmembers(your_module) if inspect.isfunction(obj)]
print(functions)

这样可以获得该模块中所有定义的函数名称列表。

Q
是否能获取模块中包括内置函数或方法的所有函数?

怎样才能不仅获取模块用户定义的函数,还能获取内置的函数或者通过C扩展定义的函数?

A

结合多种判断方法获取模块内所有函数,包括内置和C扩展函数

inspect.isfunction()只能识别用Python代码定义的函数,对于C扩展或内置函数,可以使用inspect.isbuiltin()来判断。综合两者:

import inspect
import your_module

functions = [name for name, obj in inspect.getmembers(your_module) if inspect.isfunction(obj) or inspect.isbuiltin(obj)]
print(functions)

这样一来,模块中所有类型的函数都可以被识别并列出。

Q
如何通过代码动态调用模块中的指定函数?

在获取到模块里的函数列表后,怎样根据函数名动态调用这些函数?

A

利用getattr()函数根据字符串函数名调用模块中的函数

假设已经有了函数名称,可以利用Python的getattr()函数动态获取对应函数对象,然后调用它。示例代码:

import your_module

func_name = 'target_function'
func = getattr(your_module, func_name, None)
if func:
    result = func()  # 若函数有参数,根据实际情况传入
    print(result)
else:
    print(f"函数 {func_name} 不存在于模块中")

通过这种方式,能够灵活调用模块中的任意函数。