Viele Fragen wurden zum Importieren von Python-Modulen gestellt, speziell nach dem absoluten oder expliziten relativen Import (zB here). Der Import-Stil, wie von der Python Software Foundation vorgeschlagen, kann here gefunden werden. Kurz gesagt, es empfiehlt absoluten Import.Absoluter und relativer Import von Python-Modulen: ein Matplotlib-Beispiel
Ich schreibe diese Frage, weil ich annehme, dass die Leute, die Matplotlib entwickeln, wissen, was sie tun.
diese Annahme gegeben, und unter der Annahme, ich die großen/offensichtlichen Unterschiede zwischen diesen beiden Arten von Import verstehen, würde ich verstehen, die kleinen Unterschiede zwischen ihnen interessiert sein, dass die matplotlib-Entwickler, so etwas zu schreiben beeinflusst:
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
Dies ist der Anfang von artist.py
, enthalten in dem matplotlib
Modul (dh matplotlib.artist
). Ich schaue Matplotlib-1.5.1.
Ich möchte die Aufmerksamkeit auf die Module matplotlib.cbook
, matplotlib.transforms
und matplotlib.path
konzentrieren. Alle drei sind reine Python-Module (d. H. module_name.py
Dateien).
Warum wurde from matplotlib.cbook import mplDeprecation
anstelle von from .cbook import mplDeprecation
gewählt und warum wurde from .path import Path
zu from matplotlib.path import Path
vorgezogen?
Vielleicht gibt es keinen bestimmten Grund und diese Entscheidungen spiegeln nur verschiedene Stile von verschiedenen Entwicklern wider; vielleicht gibt es etwas, das mir fehlt.
Ok, ich nehme an, es ist nur wegen der unterschiedlichen Geschmacksrichtungen der Entwickler. Vielleicht kannst du uns dann etwas über deine sagen: Warum hast du 'von Matplotlib.cbook ...' anstatt von '.cbook ...' gewählt? – Gioker
@Gioker Ich erinnere mich ehrlich gesagt nicht. Wie Sie darauf hinweisen, pep8 schlagen absolute Importe vor und es ist expliziter. – tacaswell