防止导入的模块出现在代码完成中?

Keep imported modules from showing up in code completion?

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

例如:

# testmodule.py

import os

def o_stuff():
    return

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

是否有类似于星号(即 from testmodule import *)的东西可以做到这一点?

您可以尝试使用模块中的 __all__ 看看是否有帮助。

import os

__all__ = ['o_stuff']

def o_stuff():
    return

不熟悉 Intellisense,但听起来它还可以使用一些微调。

您可以定义一个特殊变量 __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 * 并且代码完成通常会忽略下划线前缀的名称。