我有一个名为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
如何导入具有现有上下文的模块?
答案 0 :(得分:2)
这是相当hackish - 不要依赖于生成代码,因为并非所有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
>>>
答案 1 :(得分:0)
在globals
中调用module.py
将在模块的范围中生成全局变量。我假设你想让它看一下解释器范围内的全局变量?简短的回答是,你不能这样做,你不应该这样做。如果它需要一个选项,请故意设置该选项,但不要引用魔术全局。
如果必须,可以使用
传递解释器的全局变量modules.update_config( globals( ) )