如何防止导入的模块被访问(即堵塞我的代码完成选项)?
例如:
# testmodule.py
import os
def o_stuff():
return
当我导入testmodule
时,我不希望每次输入os
时都显示testmodule.
;我只想要在testmodule中声明的函数/类 - 在这种情况下,只需要o_stuff
。
是否有与星号类似的东西(即from testmodule import *
)会这样做?
答案 0 :(得分:3)
您可以定义一个特殊变量__all__
,其中包含from module import *
要导入的名称列表 - 例如:
# testmodule.py
import os
__all__ = ['o_stuff', 'more_stuff']
def o_stuff():
pass
def more_stuff():
pass
具有代码完成功能的IDE通常也会尊重__all__
(虽然我对Visual Studio不熟悉,所以我不知道IntelliSense是否这样做。)
另一种选择,包含在这里是为了完整性,虽然我强烈建议反对它(因为它会让任何读取你的代码的人感到烦恼)将导入模块作为下划线前缀别名:
# ugly_as_sin.py
import os as _os
def o_stuff():
return _os.name
同样,from module import *
和通常代码完成都会忽略以下划线为前缀的名称。
答案 1 :(得分:2)
您可以尝试使用模块中的__all__
来查看它是否有帮助。
import os
__all__ = ['o_stuff']
def o_stuff():
return
不熟悉Intellisense,但听起来它也可以使用一些微调。