私は組み込みモジュールを使用していくつかのインスタンスを挿入しているため、デバッグのためにグローバルにアクセスできます。 __builtins__
モジュールの問題点は、メインスクリプトでモジュールであり、モジュール内の辞書であるということですが、場合によっては私のスクリプトがメインのスクリプトやモジュールられるように、私はこれをしなければならない。なぜ__builtins__はmoduleとdictの両方ですか?
if isinstance(__builtins__, dict):
__builtins__['g_frame'] = 'xxx'
else:
setattr(__builtins__, 'g_frame', 'xxx')
これより短い回避策はありますか?もっと重要なのは、なぜ__builtins__
がこのように振る舞うのでしょうか?
ここにこれを表示するスクリプトがあります。
#module-a
import b
print 'a-builtin:',type(__builtins__)
はモジュールb.pyを作成します:モジュールa.pyを作成
#module-b
print 'b-builtin:',type(__builtins__)
今すぐ実行するのpython a.py:
$ python a.py
b-builtin: <type 'dict'>
a-builtin: <type 'module'>
、参照http://stackoverflow.com/questions/11181519/python-whats-the-difference-between-builtin-and-builtins [可能な重複] – pd12