Python 3.x Python:如何编写依赖于外部模块的函数
如果我们编写的函数依赖于某些包/模块,我们是否需要从函数中导入所有模块?或者我们是否以某种方式(如何?)检查依赖项并提出错误/警告?由于函数可能会被多次调用,如何高效地执行此操作?我们如何处理别名?我的意思是,如果调用函数的代码导入了所需的包,但使用了别名,例如,Python 3.x Python:如何编写依赖于外部模块的函数,python-3.x,function,Python 3.x,Function,如果我们编写的函数依赖于某些包/模块,我们是否需要从函数中导入所有模块?或者我们是否以某种方式(如何?)检查依赖项并提出错误/警告?由于函数可能会被多次调用,如何高效地执行此操作?我们如何处理别名?我的意思是,如果调用函数的代码导入了所需的包,但使用了别名,例如,import numpy as np,我们如何从函数中访问它 看你的评论,我建议你已经回答了自己的问题。您知道您不希望用户知道函数的模块依赖关系 你说你想把这个函数放在一个模块中——现在我们称它为my_模块 因此您有一个文件my_mod
import numpy as np
,我们如何从函数中访问它 看你的评论,我建议你已经回答了自己的问题。您知道您不希望用户知道函数的模块依赖关系
你说你想把这个函数放在一个模块中——现在我们称它为my_模块
因此您有一个文件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
现在,任何想要使用您的函数的人都可以从my_module import my_numpy_func编写,而不必担心加载依赖项
注意:这与确保用户的计算机上实际安装了所需的非标准软件包无关。例如,如果他们没有安装numpy
,当他们尝试导入您的函数时,他们将得到一个ImportError
如果您希望分发代码并使其使用户不必担心这一点,那么您可能需要使代码成为一个包,使依赖项成为安装的一个要求 你在哪里定义这个函数?你希望它怎么使用?基本上,无论您在哪里定义函数,您都需要为它使用的任何模块进行导入。@PyPingu谢谢您的评论。我想保存函数(作为模块?),以便用户可以加载它以供使用。一般来说,我不希望用户知道函数有哪些依赖项。谢谢你的帖子。因此,函数本身不能保存,即只保存def….
代码块,需要保存为模块吗?如果用户已经在他们的代码中加载了numpy
包怎么办?加载函数是否还会再次加载相同的包?有没有办法避免这种重复?谢谢你真的不需要担心。Python使用了一种新的方法,因此任何重复的导入都不会真正影响性能。