geekdoc-python-zh/docs/askpython/absolute-vs-relative-import...

2.2 KiB
Raw Permalink Blame History

Python 中的绝对导入与相对导入

原文:https://www.askpython.com/python-modules/absolute-vs-relative-importing

你好,学习伙伴!今天我们将学习 Python 中绝对导入和相对导入的区别。

每次你需要一个直接的函数来实现我们程序中的任何东西,我们可以直接从正确的库中导入它!现在让我们学习 Python 编程中的绝对和相对导入。

什么是绝对进口?

当我们通过绝对导入来导入模块时,我们需要在 import关键字后面包含模块的完整路径。

完整路径包括主模块/库以及程序中使用的子模块或函数。

绝对进口的优势

  1. 这种方法清晰、直截了当且易于理解
  2. 即使 import 语句的当前位置在以后发生了变化absolute import 命令仍然有效。

绝对进口的缺点

让我们假设,我们必须导入一个存在于根模块更深层的函数。此类模块的绝对导入命令如下所示:

from package_1.sub_package_1.sub_package2.sub_package3.module1 import req_function

如果所需的功能存在于更深的层中,那么就会变得非常混乱和复杂。这时候相对进口来拯救!

什么是相对导入?

在相对方法中,我们可以相对于某个包或子包的位置来导入一个函数,这是一种更好的导入模块和函数的方法。

我们有两种类型的相对导入方法,即implicitexplicit方法,但是隐式方法不再支持 Python3.x 版本。

相对导入方法如下所示:

from .sub_package_x.module_5 import req_function

最初的.考虑了所有之前的主机模块/库,我们不需要像绝对导入那样写整个东西。

相对进口的优势

  1. 重要陈述简短明了。
  2. 降低导入语句的复杂性

相对进口的缺点

  1. 这种方法可读性不强,而且程序员不知道许多根模块。
  2. 程序员不知道我们正在导入的函数的来源

结论——绝对进口与相对进口

现在您知道了绝对和相对导入方法之间的基本区别。

我建议你作为初学者选择绝对方法,随着你编码经验的增加,你可以开始使用相对方法。