如果我们编写依赖于某些软件包/模块的函数,是否需要从函数内import
来使用所有模块?还是我们以某种方式(方式?)检查依赖关系并引发错误/警告?如何高效地执行此功能,因为该功能可能被调用很多次?以及我们如何处理别名?我的意思是,如果调用该函数的代码已导入所需的程序包但使用了别名,例如import numpy as np
,我们如何从函数中访问它?
答案 0 :(得分:1)
因此,查看您的评论,我建议您回答自己的问题。您了解到,您不希望用户知道功能的模块依赖性。
您说要在模块中使用此功能-现在将其称为my_module
。
因此,您有一个文件my_module.py
:
#Add any imports code in this module relies on
import os
import numpy as np
def my_numpy_func(arg1, arg2):
#function code using numpy e.g.
my_arr = np.array(arg1)
#etc etc
return result
def some_other_func():
#blah blah blah
现在,任何想要使用您的函数的人都可以编写from my_module import my_numpy_func
,而不必担心加载依赖项。
注意:这与确保用户实际上已在其计算机上安装了非标准软件包没有任何关系。例如,如果他们尚未安装numpy
,则在尝试导入您的函数时会得到ImportError
。
如果您想分发代码并使之无需用户担心,那么您可能需要将代码打包为使依赖成为安装要求的软件包。