是否可以import
来自现有Python模块的所有内容(*
除外一些明确指定的方法?
(背景:针对推荐的Python实践,在FEniCS中常见from dolfin import *
。一些方法名称包含字符串“Test”(例如,TestFunction()
)和被nose误认为是单位测试。)
答案 0 :(得分:9)
是的,你可以define the __all__
模块
添加
__all__ = ["echo", "surround", "reverse"] #Or whatever your module names are
到包含这些模块的文件,或者要从中导入的包的__init__.py
。
现在
from module import *
仅导入 __all__
答案 1 :(得分:9)
如果您无法访问模块,也可以从全局命名空间中删除这些方法或变量。以下是如何做到这一点:
to_exclude = ['foo']
from somemodule import *
for name in to_exclude:
del globals()[name]
答案 2 :(得分:-1)
执行任何导入*通常不是一个好主意,因为这会导致与其他模块同名的模块出现问题。
您是说要为模块启用此功能,还是为现有模块执行此操作?
在没有修改模块的情况下,对于尚未设置的现有模块,没有任何方法(我知道)。