Было задано много вопросов относительно того, как импортировать модули Python, в частности, следует ли использовать абсолютный или явный относительный импорт (например, here). Стиль импорта, предложенный Python Software Foundation, можно найти here. Короче говоря, он рекомендует абсолютный импорт.Абсолютный и относительный импорт модулей Python: пример matplotlib
Я пишу этот вопрос, потому что я предполагаю, что ребята, которые разрабатывают matplotlib, знают, что они делают.
Учитывая это предположение, и предполагая, я понимаю основные/очевидные различия между этими двумя видами импорта, мне было бы интересно понять крошечные различия между ними, повлиявшие с разработчиками Matplotlib, чтобы написать что-то вроде этого:
import matplotlib
import matplotlib.cbook as cbook
from matplotlib.cbook import mplDeprecation
from matplotlib import docstring, rcParams
from .transforms import (Bbox, IdentityTransform, TransformedBbox,
TransformedPath, Transform)
from .path import Path
Это начало artist.py
, содержащееся внутри модуля matplotlib
(то есть matplotlib.artist
). Я смотрю на matplotlib-1.5.1.
Я хотел бы обратить внимание на модули matplotlib.cbook
, matplotlib.transforms
и matplotlib.path
. Все три из них представляют собой чистые модули Python (т. Е. module_name.py
файлов).
Почему был выбран from matplotlib.cbook import mplDeprecation
, а не from .cbook import mplDeprecation
и почему from .path import Path
был предпочтительно from matplotlib.path import Path
?
Возможно, нет особой причины, и эти варианты просто отражают разные стили разных разработчиков; возможно, что-то мне не хватает.
Хорошо, я полагаю, это связано только с вкусами разных разработчиков. Возможно, вы можете рассказать нам о себе: почему вы выбрали 'from matplotlib.cbook ...' вместо' from .cbook ... '? – Gioker
@Gioker Я честно не помню. Как вы указываете, pep8 предлагает абсолютный импорт, и он более явный. – tacaswell