Есть ли преимущество импорта модуля по относительному пути по сравнению с реальным именем пакета? - PullRequest
0 голосов
/ 03 октября 2019

Допустим, у меня есть структура папок, как показано ниже.

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

Мне нужно импортировать БД в model.py. Я могу импортировать его, используя

from app import db

или

from . import db

Есть ли разница между ними? Есть ли у одного метода какие-либо преимущества перед другим?

1 Ответ

1 голос
/ 03 октября 2019

Абсолютный импорт предпочтителен, потому что он достаточно понятен и понятен. Легко сказать, где именно находится импортируемый ресурс, просто взглянув на утверждение. Фактически, pep8 явно рекомендует абсолютный импорт.

Иногда, однако, абсолютный импорт может быть довольно подробным, в зависимости от сложности структуры каталогов. Представьте себе следующее утверждение:

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

Это выглядит нелепо! Правильно?

Итак, Относительный импорт входит в картину. Относительный импорт определяет ресурс, который должен быть импортирован относительно текущего местоположения, то есть местоположения, в котором находится оператор импорта.

Над сложным оператором импорта становится:

from ..subpackage4.module5 import function6

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...