如果在Python中自我导入,为什么不会出现无限循环?

8

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

如何pickle一个对象?

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

5个回答

12

5

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


2

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


2

我相信Python会追踪已经被导入的模块,以避免重复导入浪费时间。每个模块只能被导入一次。


2
在Python中,导入模块会将导入模块的命名空间绑定放在当前命名空间中(如果它们不存在)。如果您导入一个模块两次,它实际上只会被导入(因此执行)一次。这就是为什么当您将模块导入自身时,实际上什么也不会发生,因为命名空间绑定已经存在于当前命名空间中。请注意保留HTML标记。

关于命名空间的第一个且唯一的回答。 - Humphrey Bogart

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接