2016-07-19 25 views
1

Dies ist eine theoretische Frage, nach der ich seit einiger Zeit eine Antwort gesucht habe, die ich aber nie wirklich finden konnte.Python: Optimieren von Modulimporten

Angenommen, ich habe meine Hauptdatei main.py, die import numpy as np und import helper hat.

Wenn ich eine Hilfsdatei helper.py haben, konnte ich np in helper.py, weil ich es schon in main.py importiert, und das einzige Mal, dass ich jemals verwenden helper.py über main.py ist, was zu numpy immer importiert werden?

+1

Duplikat von [Das selbe Modul wird in verschiedene Dateien importiert] (http://stackoverflow.com/q/18792145/2301450)? – vaultah

+3

Was ist passiert, als Sie das Experiment ausprobiert haben? – AlG

Antwort

1

No. Die python documentation Staaten:

Die Import-Anweisung kombiniert zwei Operationen; es sucht nach dem benannten Modul, dann bindet es die Ergebnisse dieser Suche an einen Namen in den lokalen Bereich.

Wenn der Import an der Spitze eines Moduls auftritt, wird lokaler Bereich global sein - das heißt lokal auf das Modul.

Auf der positiven Seite werden normalerweise Importe nur einmal auftreten. Python durchsucht den Cache nach Importen, bevor ein Import ausgeführt wird, und erstellt einen Verweis auf ein zuvor importiertes Modul, wenn es gefunden wird. Dies spart speichern eine zweite Kopie - es ist nicht schädlich (im Allgemeinen) die Import-Anweisung in beiden Modulen.

Der erste Ort, der während der Importsuche überprüft wurde, ist sys.modules. Diese Zuordnung dient als Cache aller Module, die zuvor importiert wurden, einschließlich der Zwischenpfade. Zusätzlich

, vom FAQs:

Wie teile ich globale Variablen über Module?

Die kanonische Möglichkeit, Informationen innerhalb von Modulen innerhalb eines einzigen Programms zu teilen, besteht darin, ein spezielles Modul zu erstellen (oft als config oder cfg bezeichnet). Importieren Sie das Konfigurationsmodul einfach in alle Module Ihrer Anwendung.