Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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 3.x Python:如何编写依赖于外部模块的函数_Python 3.x_Function - Fatal编程技术网

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使用了一种新的方法,因此任何重复的导入都不会真正影响性能。