我有一个名为 module.py 的模块,它检查上下文中的全局变量。
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
如何导入具有现有上下文的模块?
这是相当骇人听闻的——不要将其用于生产代码,因为并非所有 Python 实现都有inspect.getouterframes
函数。但是,这在 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
>>>
调用将产生模块范围内globals
的module.py
全局变量。我假设您希望它查看解释器范围内的全局变量?简短的回答是您不能这样做,而且您不应该这样做。如果它需要一个选项,请故意设置该选项,但不要引用一个神奇的全局。
如果必须,您可以将解释器的全局变量传递给
modules.update_config( globals( ) )