Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何避免多次加载模块?_Python_Module - Fatal编程技术网

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解决方案非常有效。非常感谢你们的投入