不要在Python包的顶层看到模块导入

时间:2017-04-10 13:58:30

标签: python

考虑以下python包结构

 working_directory/
-- test_run.py
-- mypackge/
---- __init__.py
---- file1.py
---- file2.py

并在file1.py内部说我已经定义了一个函数func1(),我还从numpy中导入了一些像from numpy import array这样的函数。现在我想从mypackage导入并使用test_run.py,而不会在命名空间中看到这些numpy函数。我想使用import mypackage as mp导入它并查看

mp.file1.func1()
mp.file2.func2()
etc

我不想看mp.file1.array()。我该怎么办?

1 个答案:

答案 0 :(得分:0)

一种可能性是使用下划线:

from numpy import array as _array.

虽然这并不禁止人们访问mp.file1._array,但一般认为以下划线开头的变量属于私人'。

AFAIK,没有简单的方法可以禁止访问python中的任何变量。 (一种方法是使其成为类的属性,请参阅:https://docs.python.org/3/library/functions.html#property