python导入深度

时间:2010-06-29 17:17:26

标签: python import depth

我注意到导入模块会导入其功能和方法,以及那些功能和方法。导入上级模块时,python将导入多少级别的设置规则吗?

修改

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

第二次修改

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

3 个答案:

答案 0 :(得分:3)

不,python将导入它需要导入的内容。但是,每个模块仅导入一次。例如,如果一个模块导入sys并且另一个模块导入sys,则它实际上不会执行两次。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

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