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

Python : Import Libraries in Module or in Function

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

示例代码

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.

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

不会有太大的好处。 Python 风格指南鼓励程序员将所有导入放在模块文件的开头。
在开头导入是 Python 哲学和风格的一部分。
正如您在代码中所示,一种提高效率的方法是仅导入您需要的内容:from numpy import mean,random
如果你在一个函数中导​​入它会给你一个小的效率优势,但除非你正在处理一个时间非常关键的应用程序,否则最好使用一般的 Pythonic 风格,在开始时导入所有东西。

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

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

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

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