2012-04-11 8 views
1

Ich schreibe einen Code, in dem ich einige Dateien in der Datenstruktur im Speicher speichern werde, und werde dann diese Datenstruktur in allen Modulen in Reihenfolge verwenden um auf diese Datenstruktur zuzugreifen. (zeitsparend)Wie Datenstruktur im Speicher von Modul zu Modul übergeben

Da der Code in Python geschrieben ist und sehr groß ist, ist es sehr schwierig, diese Datenstruktur von Funktion zu Funktion zu übergeben.

Gibt es einen möglichen Weg, dass ich die Datei-zu-Daten-Struktur am Anfang des Codes speichern, und dann kann ich diese Datenstruktur in jedem Modul verwenden, da diese Datenstruktur während der Programmausführung.

Bitte helfen. Extrem wichtig..!!

Lassen Sie mich ein Beispiel geben.

main.py ..... Dies ist der Beginn des Projekts, hier speichere ich die komplette Datei-in-Datenstruktur. other_module.py ..... Dies ist ein anderes Modul, in dem ich auf die Datenstruktur zugreifen möchte, die sich im Speicher befinden muss, während main.py ausgeführt wird und andere_module.py aufgerufen hat.

Hinweis, ich kann nicht Datei-zu-Datenstruktur, was im Innern other_module speichern, weil dann wäre es sehr zeitaufwändig sein, da hier ich ein sehr kleines Beispiel geben werde, aber ich zu tun habe tatsächlich mit einem größeren Problem.

Danke.

Antwort

0

Python-Variablen und Funktionsargumente sind immer nur Verweise auf Objekte. Sie müssen also keine großen Datenstrukturen als Funktionsargumente übergeben: Die Daten werden nicht kopiert, es wird nur eine neue Referenz erstellt.

Wenn Sie jedoch wissen, dass Ihr Code immer nur mit einer einzigen Instanz der Datenstruktur arbeiten wird, können Sie ihn in einer globalen Variablen speichern. Sie könnten ein separates Modul erstellen, das die Daten in eine Variable auf Modulebene lädt und dieses Modul in main.py und other_module.py importiert.

1

und ist sehr groß, so dass es sehr schwer ist, diese Datenstruktur von Funktion zu Funktion zu übergeben.

Nein, ist es nicht. Python-Variablen funktionieren nicht so. Sie erhalten implizit einen Zeiger.