使用 * 导入时如何列出 python 模块中的所有函数

How to list all functions in a python module when imported with *

我在 python 中导入一个模块,如下所示:

from myutils.user_data import *

如何查看我导入的方法列表?

我从这里知道一种解决方法:

How to list all functions in a Python module?

是:

from inspect import getmembers, isfunction
import myutils.user_data as module_name
functions_list = getmembers(module_name, isfunction)
print(functions_list)

但这将迫使我使用命名法:

module_name.mehtodA() 而我希望能够使用这样的方法 methodA()

我当然可以:

from myutils.user_data import *
import myutils.user_data as module_name

但这实际上是两次导入。

有什么想法吗?

编辑:我为什么需要这个?我正在 JupyterHub 环境(内部)中为模块创建文档。我使用笔记本创建此文档,即任何有兴趣了解特定 .py 文件(包括实用程序方法)的使用的人都可以打开笔记本并进行操作,并且可以将 jupyter 笔记本呈现为带有 voila 的网站。在这种情况下,我想打印特定 .py 文件中包含的所有方法。
这也是刚才让我很好奇的一个问题。有人评论说你永远不会导入带有 * 的模块。好吧,如果您知道要导入的是一些非常小的方法,那为什么不呢。

一般很少建议您使用 from ... import * 样式,因为它可能会覆盖本地符号或其他模块首先导入的符号。

蜜蜂说的,你可以做到

symbols_before = dir()
from myutils.user_data import *
symbols_after = dir()
imported_symbols = [s for s in symbols_after if not s in symbols_before]

将新导入的符号存储在 imported_symbols 列表中。 或者您可以使用该模块仍加载到 sys.modules 并执行

的事实
import sys
from inspect import getmembers, isfunction
from myutils.user_data import *
functions_list = getmembers(sys.modules['myutils.user_data'], isfunction)
print(functions_list)