Исходный код Pandas импортирует несколько модулей - PullRequest
0 голосов
/ 05 февраля 2019

Я смотрел на исходный код панд здесь , и нашел следующее утверждение немного странным:

from pandas._libs import NaT, groupby as libgroupby, iNaT, lib, reduction

Кажется, что он импортировал Nat и groupby, которыедве библиотеки, как несколько модулей (libgroupby, iNaT, lib, сокращение).

  1. Я пошел в библиотеку pandas._libs здесь , но не нашеллюбая модель с именем NaT.Действительно, существует groupby.pyx, который, как я полагаю, является библиотекой groupby?

  2. Может ли количество импортируемых библиотек быть меньше, чем импортированных модулей?Как это работает?Из моего прошлого понимания мы можем сделать import a as b, но мы не можем сделать import a as b, c.

1 Ответ

0 голосов
/ 05 февраля 2019

из pandas._libs фактически импортировано 5 методов / классов / модулей:

  1. NaT,
  2. grouby как libgroupy (так что в вашем скрипте вы теперь будете использовать libgroupy)
  3. iNaT
  4. lib
  5. сокращение

Теперь NaT и iNaT действительно не существует в папке _libs, но это не приведет к ошибке импорта, поскольку они импортированы откуда-то еще в __init__.py из _libs.
__init__.py пакета неявно выполняется всякий раз, когда что-либо импортируется из этого пакета или его подпакетов.
Таким образом, __init__.py внутри _libs будет выполняться, где NaT, iNaT etc. импортируется из пакета .tslibs, что делает их доступными для импорта.из пакета .libs тоже.
Теперь, если вы будете искать NaT или iNaT в папке .tslibs, вы не найдете его, но если вы посмотрите на __init__.py из .tslibsЗдесь вы увидите, что NaT и iNaT импортированы из .nattype, поэтому, если вы загляните внутрь этого файла, то найдете там определения NaT и iNaT.

Youможете взглянуть на документы для лучшего объяснения

Вы можете импортировать его следующим образом, и тогда вам будет легче понять, что происходит:

from pandas._libs import NaT, iNaT, lib, reduction, groupby as libgroupby

Этот импорт будет делать то же самое, что и оператор импорта в вашем вопросе.

...