Ist es wichtig, wo Module in einen Code geladen werden? Oder sollten sie alle oben deklariert werden, da während der Ladezeit die externen Module geladen werden müssen, unabhängig davon, wo sie im Code deklariert sind ...?
Beispiel:
%Vor%oder wird dies vom Compiler wie folgt optimiert:
%Vor%Dies zeigt an, dass es einen Unterschied machen kann:
"import-Anweisungen können fast überall ausgeführt werden. Es ist oft nützlich, sie in Funktionen zu platzieren, um ihre Sichtbarkeit einzuschränken und / oder die Startzeit zu reduzieren. Obwohl der Interpreter von Python optimiert wurde, um ihn nicht zu importieren Wenn Sie mehrmals hintereinander eine Importanweisung ausführen, kann dies unter bestimmten Umständen die Leistung erheblich beeinträchtigen.
Diese beiden OS-Fragen lokale Importerklärungen? und importieren immer am Anfang des Moduls? diskutieren ausführlich.
Wenn Sie schließlich neugierig auf Ihren spezifischen Fall sind, können Sie Ihre beiden Alternativen in Ihrer Umgebung profilieren / benchmarken.
Ich bevorzuge es, alle meine import-Anweisungen an die Spitze der Quelldatei zu setzen, unter Berücksichtigung der stilistischen Konventionen und der Konsistenz (auch würde es später die Änderungen erleichtern, ohne die Quelldatei durchsuchen zu müssen, um nach Import-Anweisungen zu suchen )
Die allgemeine Faustregel ist, dass Importe an der Spitze der Datei stehen sollten, da dadurch der Code einfacher zu verstehen ist. Dadurch wird es einfacher, herauszufinden, was ein Modul benötigt, ohne den gesamten Code durchlaufen zu müssen.
Der Python-Style-Guide enthält einige grundlegende Richtlinien für die Darstellung von Imports: Ссылка
In der Praxis gibt es jedoch Fälle, in denen es sinnvoll ist, aus einer bestimmten Funktion heraus zu importieren. Dies führt zu Importen, die zirkulär wären:
%Vor%Das funktioniert nicht wie es ist, aber Sie können die Kreisform umgehen, indem Sie den Import verschieben:
%Vor%Idealerweise würden Sie die Klassen so gestalten, dass diese niemals auftauchen und sie vielleicht sogar in dasselbe Modul aufnehmen. In diesem Spielzeug-Beispiel macht es keinen Sinn, dass jeder andere importiert wird. In der Praxis gibt es jedoch einige Fälle, in denen es sinnvoller ist, einen Import für eine Methode in die Methode selbst aufzunehmen, statt alles in dasselbe Modul zu werfen oder die fragliche Methode zu einem anderen Objekt zu extrahieren.
>Aber, es sei denn, Sie haben einen guten Grund zu abweichen, sage ich mit der Top-of-the-Modul-Konvention gehen.