2

我注意到导入一个模块将导入它的函数和方法,以及它们的函数和方法。导入上层模块时,python 将导入多少层是否有固定规则?

编辑

抱歉,我认为到目前为止,我对某些依赖项的多次导入的答案有所误解。我正在考虑嵌套文件夹,例如在 django 中,如果您导入 django,则可以访问 django.contrib.auth,但除非您专门导入,否则无法访问 django.contrib.auth.views。我只是想知道在这种情况下是否总是下降两个级别

第二次编辑

再次澄清..在django示例中,布局是/django/contrib/auth/views.py,其中每个子文件夹都有一个“ init .py”使其成为一个模块,其中没有一个定义任何“所有”属性. 我的示例是否不好,因为您可能无法使用点语法导航到模块指定文件夹中的文件?

4

3 回答 3

3

不,python 会导入它需要导入的东西。但是,每个模块只导入一次。例如,如果一个模块确实 import sys 而另一个模块确实 import sys,它不会在物理上执行两次。

于 2010-06-29T17:23:56.670 回答
1

并不真地。一个模块从其他模块导入东西,因为它需要在该模块中使用它们,否则它会中断。

于 2010-06-29T17:22:27.203 回答
1

没有预定义的导入深度级别。执行导入语句,就像任何其他 python 语句一样。

但是,您可能想知道,如何避免循环?模块在第一次被导入时被添加到 sys.modules(即缓存),这是执行导入语句时检查的第一个位置。所以每个模块只加载一次,尽管它可能出现在许多导入语句中。

于 2010-06-29T17:35:10.560 回答