2014-06-10 9 views
5

Ich habe einige schwere Berechnungen, die ich machen möchte, wenn mein Programm startet, und dann möchte ich das Ergebnis (eine große holprige Matrix) im Speicher speichern, damit ich es immer wieder verwenden kann. Mein Programm enthält mehrere Dateien und Klassen, und ich möchte auf diese Variable von überall zugreifen können, und wenn möglich als Konstante definieren.Wie deklariert man eine globale Konstante in Python?

Wie definieren Sie eine globale Konstante in Python?

Antwort

10

Sie können einfach eine Variable auf der Modulebene deklarieren und sie im Modul als global Variable verwenden. Sie können es auch in andere Module importieren.

#mymodule.py 
GLOBAL_VAR = 'Magic String' #or matrix... 

def myfunc(): 
    global GLOBAL_VAR 
    #do something 

Oder in anderen Modulen:

from mymodule import GLOBAL_VAR 
1

Es gibt keine Möglichkeit, eine Konstante in Python zu deklarieren. Sie können nur

SOME_CONSTANT = [...] 

verwenden Wenn der Dateiname in dem es deklariert wird file1.py ist, dann kann man darauf zugreifen aus anderen Dateien auf folgende Weise:

import file1 

print file1.SOME_CONSTANT 

Unter der Annahme, dass beide Dateien in das sind dasselbe Verzeichnis.

-1

Ich bin nicht sicher, was Sie durch 'globale Konstante' bedeuten; weil es in Python keine Konstanten gibt (es gibt keinen "Datenschutz", alle Variablen sind zugänglich).

Sie können eine singleton pattern implementieren, aber Sie müssen diese zur Laufzeit neu generieren jedes Mal.

Ihre andere Option wird sein, die Ergebnisse in einem externen Speicher (wie zB redis) zu speichern, auf den von allen Prozessen zugegriffen werden kann.

Je nachdem, wie groß Ihr Datensatz ist, kann eine externe Speicherung in einem schnellen K/V-ähnlichen Redis auch eine Leistungssteigerung bieten.

Sie müssten es immer noch transformieren und laden, da redis nicht wissen würde, was ein numpy Array ist (obwohl es many complex types hat, die Sie ausnutzen können).

8

Ich glaube nicht, dass die als gut markierte Antwort die OP-Frage löst. Das Schlüsselwort global in Python wird verwendet, um eine globale Variable in einem lokalen Kontext zu ändern (as explained here). Dies bedeutet, dass, wenn die Option SOME_CONSTANT innerhalb myfunc ändert die Änderung auch außerhalb der Funktionsumfang (global) betrifft.

Nicht mit dem global Schlüsselwort am Anfang der myfunc näher an das Gefühl der globalen Konstante als diejenige vorgeschlagen. Trotzdem gibt es keine Möglichkeit, eine Variable in Python konstant zu machen.

Verwandte Themen