0

如果用 Python 写一个比较大的应用,有两个文件都需要导入同一个 module

比如:一个文件 core.py 需要:

import numpy as np

另一个文件 main.py 需要导入上面的文件,并且也需要用到 numpy,

import numpy as no
import core

import core.np as np
import core

这两种方式哪个更好,假如需要非常大的运算量,会有速度上的影响吗?

6个回答

2
import numpy as np
import numpy as np

在一个文件中或者不同文件中 import 一个模块多次,python 只会在第一次的时候执行这个模块的相关代码。所以性能上没有差别。

比如:

# a.py
print("I'm module a, you are importing me...")
# b.py
import a
import a

你可以看到只会输出一次

0

使用第一种方式比较好,因为第二种方式会是两个模块产生耦合,这样不合理。

python在import模块的时候有加载路径的,效率上不会有很大的差别。

0

这只是导入模块而已,就算运算量大也不会怎么影响性能吧

至于哪种好,我觉得第一种写法好一点,更直接一些,这样找的时候也很容易;第一种这样会造成依赖关系复杂,两层倒还好,要是到后面四层五层看了都费劲

0

第一种吧,性能上其实区别不大,但是第二种显的重复而且晦涩,完全可以import core然后使用core.np,python
之禅里面强调显式优于隐式。有一点需要注意,如果你的代码在core里对numpy模块的任何属性做了重绑定,则就不要再用原生的numpy而是用corn.np

0

不会导致性能问题。Python对于已import一遍的module不会再导第二遍。
如果说哪个更好,我觉得在这个问题上你需要充分考虑你的代码可读性。numpy对于你的项目来说本身是一个公共的模块,从这一点出发,如果你在main.py中从core.py中去import这个这个模块,可能对于可读性会造成一定的影响,所以我觉得第一种比较好

0

不会有什么大的影响, 因为导入时, 默认会从.pyc文件中取得模块, 如果没有, 则会自动生成.pyc文件

撰写答案