Python 效率:在我正在导入的东西中导入东西?

Python efficiency: importing things in things I am importing?

假设我正在制作一个项目,我们称它为master.py,因为它是主文件。

#this is master.py
import a
import b
for i in range (whatever):
 for j in range (whatever):
  a.main(i)
  b.main(j)

a 和 b 是我制作的其他子函数,位于其他文本文件中(以便于调整)。现在假设 a 是:

#this is a.py
def main(i):
 from numpy import sin
 return sin(i)

和 b:

#this is b.py
def main(j):
 from random import uniform
 return uniform(0, j)

master.py 多次调用函数 a 和 b。每次这样做,它都会在 a 中导入 sin,在 b 中导入 uniform。这效率不高,但我不知道解决它的方法(除了将 a 和 b 放在与 master.py 相同的文本文件中,出于调试原因我不想这样做)。我尝试将导入 sin 和 uniform 的语句改为 master.py,但是当它调用 a 和 b 时,它失败了,因为没有导入 sin 和 uniform。我想它必须在子程序中导入它们?我能以某种方式在 master.py 中导入 sin 和 uniform 并将它们传递给 a 和 b 这样我就不必每次都导入了吗?

您是否尝试过在 a.pyb.py 的顶部导入?

# a.py
from numpy import sin

def main(i):
    return sin(i)

和:

# b.py
from random import uniform

def main(j):
    return uniform(j)

您不需要在 master.py 中导入 random.uniformnumpy.sin,因为这些功能。它们被其他模块中的其他函数调用;所以在那些其他模块中需要导入。

此外,this Python Wiki page on performance 表示文件顶部的 imports 性能优越。