1

コンテキストでグローバル変数をチェックする 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

既存のコンテキストでモジュールをインポートするにはどうすればよいですか?

4

2 に答える 2

2

これはかなりハックです。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
>>> 
于 2010-08-13T19:35:59.940 に答える
0

呼び出すglobals、モジュールのスコープ内のmodule.pyグローバル変数が生成されます。インタープリターのスコープ内のグローバルを見てほしいと思いますか? 手短に言えば、そんなことはできないし、したくないはずだということです。オプションが必要な場合は、そのオプションを意図的に設定しますが、マジック グローバルを参照しないでください。

必要に応じて、インタープリターのグローバルを渡すことができます

modules.update_config( globals( ) )
于 2010-08-13T19:32:47.443 に答える