Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django示例上的Python导入规则_Python_Python Import - Fatal编程技术网

Django示例上的Python导入规则

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 问:这

我对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
问:这两者之间有什么区别吗

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的模块名。