from - working with global variables python




Wie programmiere ich eine globale(Modul-) Variable? (2)

Du hast Recht, exec ist in der Regel eine schlechte Idee und ist in diesem Fall sicherlich nicht erforderlich.

Neds Antwort ist in Ordnung. Eine andere Möglichkeit, es zu tun, wenn Sie ein Modul sind, besteht darin, sich selbst zu importieren:

fundamentalconstants.py:

import fundamentalconstants

fundamentalconstants.life_meaning= 42

for line in open('constants.dat'):
    name, _, value= line.partition(':')
    setattr(fundamentalconstants, name, value)

Ich möchte Globals "programmatisch" definieren. Etwas ähnlich zu dem, was ich tun möchte, wäre:

definitions = {'a': 1, 'b': 2, 'c': 123.4}
for definition in definitions.items():
    exec("%s = %r" % definition)  # a = 1, etc.

Insbesondere möchte ich ein Modul fundamentalconstants erstellen, das Variablen enthält, auf die als fundamentalconstants.electron_mass Konstanten zugegriffen werden kann. fundamentalconstants.electron_mass , usw., wobei alle Werte durch Parsing einer Datei erhalten werden (daher die Notwendigkeit, die Zuweisungen auf "programmatische" Weise durchzuführen).

Jetzt würde die obige exec Lösung funktionieren. Aber ich bin ein bisschen unruhig, weil ich Angst habe, dass exec nicht der sauberste Weg ist, um das Ziel zu erreichen, Module Globals zu setzen.


Hier ist ein besserer Weg, es zu tun:

import sys
definitions = {'a': 1, 'b': 2, 'c': 123.4}
module = sys.modules[__name__]
for name, value in definitions.iteritems():
    setattr(module, name, value)




global-variables