如果您在Python中导入自己,为什么不进行无限循环?

时间:2010-08-24 16:48:14

标签: python import infinite-loop

这个问题是对以下SO帖子的回应:

How do I pickle an object?

在该线程中,OP意外地在同一模块的顶部导入了自己的模块。为什么这不会导致无限循环?

5 个答案:

答案 0 :(得分:10)

模块只导入一次。 Python意识到它已经被导入了,所以不再这样做了。

请参阅:http://docs.python.org/tutorial/modules.html#more-on-modules

答案 1 :(得分:4)

当Python遇到import语句时,它会在执行任何操作之前先检查sys.modules是否存在模块

答案 2 :(得分:2)

import module如果已导入模块,则不会重新加载模块

答案 3 :(得分:2)

我相信python会跟踪哪些模块已经导入,这样就不会浪费时间进行冗余导入。每个模块只能导入一次。

答案 4 :(得分:2)

Python中的导入会导致导入模块的命名空间绑定放在当前命名空间中(如果它们尚不存在)。如果导入模块两次,它实际上只会导入(因此执行)一次。这就是为什么当你将模块导入自身时,实际上没有任何事情发生,因为命名空间绑定已经出现在当前的命名空间中。