通过相对路径和实际包名导入模块有什么优势吗?

2024-04-24 07:11:12 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个文件夹结构,如下所示

project/
-> app/
--> __init__.py (has db = SQLAlchemy(app))
--> model.py

我需要在model.py中导入db。我可以使用

from app import db

from . import db

这两者有区别吗?一种方法比另一种方法有什么优势吗


Tags: 方法frompyimportproject文件夹appdb
1条回答
网友
1楼 · 发布于 2024-04-24 07:11:12

绝对进口是首选,因为它们非常明确和直接。只需查看语句,就可以很容易地确定导入的资源的确切位置。事实上,pep8明确建议绝对导入

但是,根据目录结构的复杂性,有时绝对导入可能会变得非常冗长。想象一下有这样一句话:

from package1.subpackage2.subpackage3.subpackage4.module5 import function6

这看起来很可笑!对吧?

因此,相对进口成为可能。相对导入指定要相对于当前位置(即导入语句所在的位置)导入的资源

上述复杂导入语句变为:

from ..subpackage4.module5 import function6

希望这有帮助

相关问题 更多 >