保持导入的模块不会出现在代码完成中?

时间:2016-11-23 04:04:46

标签: python python-2.7 autocomplete python-import

如何防止导入的模块被访问(即堵塞我的代码完成选项)?

例如:

# testmodule.py

import os

def o_stuff():
    return

当我导入testmodule时,我不希望每次输入os时都显示testmodule.;我只想要在testmodule中声明的函数/类 - 在这种情况下,只需要o_stuff

是否有与星号类似的东西(即from testmodule import *)会这样做?

2 个答案:

答案 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,但听起来它也可以使用一些微调。