Что означает импорт полного пакета или подпакета, а не модуля внутри пакета? - PullRequest
0 голосов
/ 23 июня 2019

Я уточняю свой оригинальный вопрос (таким образом я отредактировал сообщение):

Давайте предположим, что у нас есть пакет с именем "PackageA". Внутри этого пакета у нас есть подпакет под названием «SubPackageA». Внутри этого подпакета у нас есть модуль с именем «ModuleA», и этот модуль содержит функцию с именем «functionA».

Я понимаю, что для вызова этой функции мне нужно выполнить следующий импорт:

import PackageA.SubPackageA.ModuleA

Затем я могу вызвать функцию, написав:

PackageA.SubPackageA.ModuleA.functionA()

Я также понимаю, что могу сделать:

from PackageA.SubPackageA.ModuleA import functionA

И тогда я могу вызвать функцию, написав:

ModuleA.functionA()

Что мне не ясно, так это: можно импортировать пакет и / или подпакет, написав:

import PackageA

import PackageA.SubPackageA

Но что я получу от этого? В конце концов, чтобы иметь возможность вызывать «functionA», я должен специально импортировать модуль, так что я получу, импортировав полный пакет и / или полный субпакет?

Спасибо, Tal.

1 Ответ

0 голосов
/ 25 июня 2019

Я пытаюсь ответить на свой вопрос с помощью дальнейших исследований, которые я провел. Давайте проигнорируем подпакет, чтобы сделать его проще.

Давайте предположим, что у меня есть "PackageA", и внутри этого пакета у меня есть модуль с именем "ModuleA", который включает в себя функцию с именем "functionA".

Вместо того, чтобы писать: "import PackageA.ModuleA" в моем основном файле, я могу написать в файле инициализации пакета PackageA следующее: "из PackageA import ModuleA", а затем в моем основном файле я мог бы просто написать: " импортировать PackageA "и все еще иметь возможность вызывать функцию (написав PackageA.ModuleA.functionA ()".

Это не имеет смысла, если у вас есть один модуль внутри вашего пакета, но вся идея использования пакетов состоит в том, чтобы объединить несколько модулей, которые связаны друг с другом, и если вы импортируете все модули из пакета dunder файл инициализации, затем в вашем коде (основной файл) вы можете получить доступ ко всем функциям из всех модулей, просто импортировав только пакет, вместо импорта каждого модуля отдельно.

Я прав?

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