Python 如何避免多次加载模块?
所以我在“创建”模块时发现了一个问题。假设我创建了一个名为Python 如何避免多次加载模块?,python,module,Python,Module,所以我在“创建”模块时发现了一个问题。假设我创建了一个名为foo的好模块,在其中我定义了一个名为function的函数,该函数依赖于numpy: foo.py: """ This is foo a nice module """ import numpy as np def function(parameter): return(np.zeros(parameter)) 然后在另一个脚本中,我想调用我的模块: import
foo
的好模块,在其中我定义了一个名为function
的函数,该函数依赖于numpy
:
foo.py:
"""
This is foo a nice module
"""
import numpy as np
def function(parameter):
return(np.zeros(parameter))
然后在另一个脚本中,我想调用我的模块:
import foo
所以我的问题是,numpy
模块加载在foo中,所以我可以从foo调用它(例如,我可以foo.np.zeros()
)
有没有我不知道的方法,模块在没有加载所有numpy
的情况下仍然可以工作(当然numpy
应该全局加载,所以foo可以工作,但我不希望从foo.np
访问它)
到目前为止,我已经尝试:
if __name__ == '__main__':
import numpy as np
但是,即使加载了
numpy
,这也会破坏模块foo
。人们可以取消foo
中的numpy,这应该不是一个问题;如果他们知道它在那里并且他们想,为什么要阻止他们?但是如果你想确保它不可公开访问,你可以,或者只是将它重命名为import numpy as _np,因为以下划线开头的名称在默认情况下是不可见的(尽管如果你知道它们在那里,你仍然可以在外部使用它们),他们使用它并没有多大问题,只是我有一大堆关于导入的东西,我不想让autocomplete充满这些东西,而不是我的包所拥有的有用功能。“全部”解决方案对我不起作用,因为我需要点符号,所以在我的示例中,函数必须被称为foo.function
,而不仅仅是函数
。因此,我想我会尝试一下下划线解决方案,就像IDE/代码编辑器出现问题一样……这可能是一个问题,我在Ubuntu上使用的是7月份发布的VScode。我将不得不在另一个IDE中尝试,但@GreenCoveGuy解决方案非常有效。非常感谢你们的投入