Python 防止导入的模块在代码完成时显示?

Python 防止导入的模块在代码完成时显示?,python,python-2.7,autocomplete,python-import,Python,Python 2.7,Autocomplete,Python Import,如何防止导入的模块不可访问(即阻塞代码完成选项) 例如: # testmodule.py import os def o_stuff(): return # testmodule.py import os __all__ = ['o_stuff', 'more_stuff'] def o_stuff(): pass def more_stuff(): pass 导入testmodule时,我不希望每次键入testmodule时都显示os;我只希望在test

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

例如:

# testmodule.py

import os

def o_stuff():
    return
# testmodule.py

import os

__all__ = ['o_stuff', 'more_stuff']

def o_stuff():
    pass

def more_stuff():
    pass
导入
testmodule
时,我不希望每次键入
testmodule时都显示
os
;我只希望在testmodule中声明函数/类–在本例中,只需
o_stuff


是否有类似于星号的东西(即testmodule import*
中的
)可以执行此操作?

您可以尝试使用模块中的
\uuuu all\uuuu
来查看它是否有帮助

import os

__all__ = ['o_stuff']

def o_stuff():
    return

不熟悉Intellisense,但听起来它也可能需要一些微调。

您可以定义一个特殊变量
\uuuuuuu all\uuuuuuu
,其中包含一个名称列表,该列表将由
从模块导入*
导入-例如:

# testmodule.py

import os

def o_stuff():
    return
# testmodule.py

import os

__all__ = ['o_stuff', 'more_stuff']

def o_stuff():
    pass

def more_stuff():
    pass
具有代码完成功能的IDE通常也会尊重
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
(尽管我不熟悉Visual Studio,所以我不知道IntelliSense是否这样做)

为了完整起见,这里提供了一种替代方法,尽管我强烈建议反对它(理由是它会让任何人阅读代码分心),即将模块作为下划线前缀别名导入:

# ugly_as_sin.py

import os as _os

def o_stuff():
    return _os.name

同样,模块导入中的
*
和代码完成通常都会忽略带下划线前缀的名称。

D'oh,3秒!