Python:在模块或函数中导入库

时间:2015-08-04 17:04:12

标签: python function import

我创建了一个具有多个小型用户定义函数的模块。其中许多功能需要不同的库功能。现在,我想知道什么是更好的做法 - 导入模块中的所有库,或导入函数中的库?在绩效方面有什么不同吗?

示例代码

my_module.py

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))

P.S。

这只是一个解释我的困境的示例代码。不要告诉我使用现成的函数而不是这些用户定义的函数。我已经知道了

2 个答案:

答案 0 :(得分:0)

它不会显着有益。 Python样式指南鼓励程序员将所有导入放在模块文件的开头。
一开始导入是Python的哲学和风格的一部分。
正如您在代码中展示的那样,提高效率的方法只是导入您需要的内容:from numpy import mean,random
如果你确实在一个函数中导​​入它会给你一个小的效率优势,但除非你在极其时间关键的应用程序上工作,否则最好采用一般的Pythonic风格,在开始时导入所有内容。

模块导入速度非常快,但不是即时的。这意味着:

  • 将导入放在模块的顶部是一项微不足道的费用,只需支付一次。
  • 将导入放在函数中会导致对该函数的调用花费更长时间。

因此,如果您关心效率,请将进口放在首位。如果您的分析显示有帮助,则只将它们移动到一个函数中。

答案 1 :(得分:0)

取决于您的功能的相关程度,但通常在模块级别更清晰。如果你的功能不相关,那么对每个功能进行不同的导入将是完全正常的,并暗示它们的独立性。那时,我只会制作两个单独的python文件。