Django示例上的Python导入规则
我对Python如何导入其类感到困惑。查看Django的源代码,我可以看到一个名为Django.views.generic的模块,其中包含很少的.py文件,如base.py、list.py或edit.py 现在,如果我想导入list.py中定义的ListView类,我可以执行以下操作:Django示例上的Python导入规则,python,python-import,Python,Python Import,我对Python如何导入其类感到困惑。查看Django的源代码,我可以看到一个名为Django.views.generic的模块,其中包含很少的.py文件,如base.py、list.py或edit.py 现在,如果我想导入list.py中定义的ListView类,我可以执行以下操作: from django.views.generic.list import ListView 但以下措施也同样有效: from django.views.generic import ListView 问:这
from django.views.generic.list import ListView
但以下措施也同样有效:
from django.views.generic import ListView
问:这两者之间有什么区别吗
Python是否将文件视为名为文件的不同模块?如果查看该文件,您将看到它为您导入了类。所以当你这么做的时候
从django.views.generic导入ListView
实际上,您是从_init__.py文件而不是从django.views.generic.list导入类
还有,看看
所以实际上没有什么区别,在这两种情况下,最终都会得到相同的对象 您可以使用is来检查它们是否具有相同的标识。每当您导入Python包(例如django.views.generic)时,都会运行包的_init__; py.py。在本例中,正如@Visgean Skeloru所指出的,_init__uu.py文件将ListView导入到django.views.generic的命名空间中。因此,您可以自由地从任意一个位置导入完全相同的类。您可能希望添加一些关于询问者的另一个问题的信息:Python是否将文件视为命名为文件的不同模块?在Python中,模块是一个文件,模块是包含Python定义和语句的文件。文件名是附加后缀.py的模块名。