【问题标题】:Python : Import Libraries in Module or in Function [duplicate]Python:在模块或函数中导入库[重复]
【发布时间】:2015-10-27 05:01:26
【问题描述】:

我创建了一个包含多个小型用户定义函数的模块。其中许多函数需要不同的库函数。现在,我想知道什么是更好的做法——导入模块中的所有库,还是导入函数中的库?性能上有什么区别吗?

示例代码

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

附言

这只是解释我的困境的示例代码。不要告诉我有现成的函数可以用来代替这些用户定义的函数。我已经知道了

【问题讨论】:

    标签: python function import


    【解决方案1】:

    取决于您的功能的相关程度,但通常在模块级别更清晰。如果您的功能不相关,那么为每个功能使用不同的导入将完全没问题,并暗示它们的独立性。那时,我只需要制作两个单独的 python 文件。

    【讨论】:

      【解决方案2】:

      这不会有很大的好处。 Python 风格指南鼓励程序员将所有导入放在模块文件的开头。
      一开始就导入是 Python 哲学和风格的一部分。
      正如您在代码中所示,提高效率的一种方法是只导入您需要的内容,例如:from numpy import mean,random
      如果您确实在函数中导入,它会给您带来轻微的效率优势,但除非您正在处理对时间要求非常严格的应用程序,否则最好在开始时使用通用的 Pythonic 风格导入所有内容。

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

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

      因此,如果您关心效率,请将导入放在首位。仅当您的分析表明有帮助时,才将它们移动到函数中。

      【讨论】:

      • 导入被缓存了,所以在函数中导入并不那么昂贵,因为它第二次所做的只是“检查导入是否在 sys.modules 中,如果是的。”
      猜你喜欢
      • 2015-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-21
      • 1970-01-01
      • 2022-11-11
      • 1970-01-01
      • 2015-03-05
      相关资源
      最近更新 更多