我创建了一个具有多个小型用户定义函数的模块。其中许多功能需要不同的库功能。现在,我想知道什么是更好的做法 - 导入模块中的所有库,或导入函数中的库?在绩效方面有什么不同吗?
from math import exp
from numpy import mean,random
def logit(x):
return exp(x)/(1+exp(x))
def sample_mean(mu,sigma,size):
return mean(random.normal(mu,sigma,size))
或者
def logit(x):
from math import exp
return exp(x)/(1+exp(x))
def sample_mean(mu,sigma,size):
from numpy import mean,random
return mean(random.normal(mu,sigma,size))
这只是一个解释我的困境的示例代码。不要告诉我使用现成的函数而不是这些用户定义的函数。我已经知道了
答案 0 :(得分:0)
它不会显着有益。 Python样式指南鼓励程序员将所有导入放在模块文件的开头。
一开始导入是Python的哲学和风格的一部分。
正如您在代码中展示的那样,提高效率的方法只是导入您需要的内容:from numpy import mean,random
。
如果你确实在一个函数中导入它会给你一个小的效率优势,但除非你在极其时间关键的应用程序上工作,否则最好采用一般的Pythonic风格,在开始时导入所有内容。
模块导入速度非常快,但不是即时的。这意味着:
因此,如果您关心效率,请将进口放在首位。如果您的分析显示有帮助,则只将它们移动到一个函数中。
答案 1 :(得分:0)
取决于您的功能的相关程度,但通常在模块级别更清晰。如果你的功能不相关,那么对每个功能进行不同的导入将是完全正常的,并暗示它们的独立性。那时,我只会制作两个单独的python文件。