Wenn Sie eine gut geschriebene Bibliothek haben, was in Python manchmal der Fall ist, sollten Sie sie einfach importieren und als solche verwenden. Eine gut geschriebene Bibliothek nimmt in der Regel das eigene Leben und die eigene Sprache in Anspruch, was zu einem angenehm zu lesenden Code führt, in dem Sie selten auf die Bibliothek verweisen. Wenn eine Bibliothek gut geschrieben ist, sollten Sie nicht zu oft umbenennen oder etwas anderes.
import gat
node = gat.Node()
child = node.children()
Manchmal ist es nicht möglich, es so zu schreiben, oder Sie möchten Dinge aus der importierten Bibliothek entfernen.
from gat import Node, SubNode
node = Node()
child = SubNode(node)
Manchmal tun Sie dies für viele Dinge, wenn Ihre Importzeichenfolge 80 Spalten überläuft. Es ist eine gute Idee, dies zu tun:
from gat import (
Node, SubNode, TopNode, SuperNode, CoolNode,
PowerNode, UpNode
)
Die beste Strategie besteht darin, alle diese Importe oben in der Datei zu belassen. Vorzugsweise alphabetisch sortiert, zuerst Import-Anweisungen, dann aus Import-Anweisungen.
Jetzt sage ich Ihnen, warum dies die beste Konvention ist.
Python hätte durchaus einen automatischen Import haben können, der anhand der Hauptimporte nach dem Wert sucht, wenn er nicht im globalen Namespace gefunden werden kann. Das ist aber keine gute Idee. Ich erkläre kurz warum. Abgesehen davon, dass die Implementierung komplizierter ist als der einfache Import, würden Programmierer nicht so sehr über die Abhängigkeiten nachdenken und herausfinden, von wo Sie Dinge importiert haben, sondern auf andere Weise als nur über Importe nachdenken.
Die Notwendigkeit, Abhängigkeiten herauszufinden, ist ein Grund, warum Menschen "von ... import *" hassen. Es gibt jedoch einige schlechte Beispiele, bei denen Sie dies tun müssen, zum Beispiel opengl-Wrappings.
Die Importdefinitionen sind also tatsächlich wertvoll, um die Abhängigkeiten des Programms zu definieren. Auf diese Weise sollten Sie sie ausnutzen. Von ihnen aus können Sie schnell überprüfen, woher eine seltsame Funktion importiert wird.