Pythonモジュールをインポートする方法、具体的には相対的なインポートを明示的に使うか明示的に使うか(例えばhere)について多くの質問がありました。 Python Software Foundationが提案するインポートスタイルは、hereです。つまり、絶対インポートをお勧めします。Pythonモジュールの絶対インポートと相対インポート:matplotlibの例
私はmatplotlibを開発している人たちが何をしているのかを知っているので、私はこの質問を書いています。
この仮定を考えると、私は輸入のこの2種類の間の主要な/明白な違いを理解すると仮定すると、私はこのような何かを書くこと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
matplotlib
モジュール(つまりmatplotlib.artist
)に含まれるartist.py
の先頭です。私はmatplotlib-1.5.1を見ています。
モジュールmatplotlib.cbook
,matplotlib.transforms
およびmatplotlib.path
に注目したいと思います。これらの3つはすべて純粋なPythonモジュールです(つまり、module_name.py
ファイル)。
from .cbook import mplDeprecation
ではなくfrom matplotlib.cbook import mplDeprecation
が選択されていますが、なぜfrom .path import Path
がfrom matplotlib.path import Path
よりも優先されたのですか?
おそらく特別な理由はなく、これらの選択肢は異なる開発者の異なるスタイルを反映しているに過ぎません。おそらく私には何かがありません。
私はそれが異なる開発者の味のためだと思います。おそらくあなたはあなたのことについて私たちに伝えることができます:なぜあなたは '.cbookから'ではなく 'matplotlib.cbook ...'を選んだのですか? – Gioker
@Gioker正直に覚えていない。あなたが指摘しているように、pep8は絶対的な輸入を示唆しており、より明示的です。 – tacaswell