目录
1.import的工作方式
Python模块是具有.py
扩展名的文件,而Python包是其中具有模块的任何文件夹(或者在Python 2中是包含__init__.py
文件的文件夹)。import从Python标准库,第三方软件包和您自己的本地软件包中导入 packages and modules
import gyf
Python import的工作方式通过import gyf来说明,Python会首先在sys.modules中查找模块名gyf,sys.modules是Python将模块名称映射到的已缓存模块字典,如果在已缓存模块字典中没查找到,Python则在内置模块(Python标准库)中查找模块名gyf,如果在内置模块中仍然找不到该名称,那么Python将在sys.path定义的目录列表中搜索该名称。此列表通常包括当前目录,当前目录首先被搜索。
当Python找到模块时,它将其绑定到本地作用域中的一个名称。这意味着现在已经定义了abc,并且可以在当前文件中使用,而不会引发NameError。如果找不到该模块,将抛出异常ModuleNotFoundError。
2.import语句的样式
导入应始终写在文件顶部,在任何模块注释和文档字符串之后。
导入应根据导入的模块进行划分。通常分为三类:标准库导入(Python的内置模块)、相关的第三方导入(已安装但不属于当前应用程序的模块)、本地应用程序导入(属于当前应用程序的模块)。每组导入都应以空格分隔。
3.绝对导入和相对导入
绝对导入必须从top-level package folder(顶级程序包文件夹)中为每个程序包或文件提供详细的路径。这有点类似于它的文件路径,但是我们使用点(.
)而不是斜杠(/
)。例如:
from package1.subpackage2.module5 import function6
相对导入使用点符号来指定位置。单点表示所引用的模块或软件包与当前位置位于同一目录中。两个点表示它位于当前位置的父目录中,即上面的目录中。三个点表示它位于祖父母目录中,依此类推。
from ..subpackage4.module5 import function6
相对进口的一个明显优势是它们非常简洁。不幸的是,相对导入可能比较混乱,尤其是对于目录结构可能会更改的共享项目。相对导入也没有绝对导入更易读,而且很难说出导入资源的位置。请记住,通常您应该选择绝对导入而不是相对导入,除非路径复杂并且会使语句过长。