Frage

Ich habe ein Modul mit dem Namen module.py, die überprüft, um eine globale Variable im Kontext.

module.py:
----------

if 'FOO' in globals():
    print 'FOO in globals'
else:
    print 'nah'


in python shell:
----------------

In [1]: FOO = True

In [2]: import module
nah

Wie kann ich importieren Module mit dem bestehenden Kontext?

War es hilfreich?

Lösung

Das ist eher hackish - verlassen Sie sich nicht auf diese für die Produktion Code, da nicht alle Implementierungen von Python haben eine inspect.getouterframes Funktion. Dies funktioniert jedoch in CPython:

import inspect
record=inspect.getouterframes(inspect.currentframe())[1]
frame=record[0]

if 'FOO' in frame.f_globals:
    print 'FOO in globals'
else:
    print 'nah'

% python
>>> import test
nah
>>> 

% python
>>> FOO=True
>>> import test
FOO in globals
>>> 

Andere Tipps

Beim globals in module.py werden die globalen Variablen ergeben im Rahmen des Moduls . Ich nehme an, Sie es an dem Globals im Rahmen des Interpreters suchen? Die kurze Antwort ist, dass Sie das nicht tun können, und Sie sollten wollen nicht. Wenn braucht es eine Option, Satz, dass Option bewusst, aber beziehen sich nicht auf einen magischen global.

Wenn Sie müssen, können Sie den Dolmetscher Globals passieren mit

modules.update_config( globals( ) )
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top