我的所有Python模块都应该显式导入相同的基本模块吗?

时间:2012-03-27 09:15:58

标签: python performance memory import

例如: main.py:

import pygame
import mycolors
color1 = mycolors.blue

mycolors.py:

import pygame
blue = pygame.Color(0, 0, 255)

我的问题特别关注两个文件中的“导入pygame”。是否真的有必要在需要它的每个模块中导入它? (答案似乎是肯定的,没有它就不会运行。)另外,这实际上是否会被导入两次?这会产生性能影响吗?

2 个答案:

答案 0 :(得分:3)

该模块只导入一次,因此您不必担心资源浪费。您可以在sys.modules中的任何位置查看已导入的所有模块。当模块导入第二个/第三个/等时。您只需获得sys.modules

中已有模块的参考时间

您必须将其导入两个其他模块的原因是它被添加到其命名空间

这在大型程序中非常重要,因为可能存在许多具有相同名称的模块,因此无论何时导入模块,您都绝不希望在每个其他命名空间中弹出模块

答案 1 :(得分:2)

我不认为这些是你在这里展示的完整源文件。就像现在一样,import pygame中不需要main.py,因为您没有在该模块中的任何位置引用它。

至于性能:多次导入同一模块不会有明显的伤害。 “真正的”导入(可能的编译步骤)只发生一次。