グローバルよりも広いもの
Pythonにはグローバル名前空間よりも広い範囲からアクセスできる名前空間があります。それはビルトイン名前空間です。openやintなどの基本的なビルトイン関数へのアクセスを提供するための名前空間ですが、ユーザーが自由に追加することができます。
__builtin__.__dict__['name'] = obj
Cでは以下のようになります。
PyDict_SetItemString(PyEval_getBuiltins(), "name", obj);
と、ここまでが先日久しぶりにPythonが組み込まれたVC++のプログラムをいじって修正したところなのですが、今この記事を書くためにAPIリファレンスを調べてみたところPyEval_getBuiltinsが載っていません…。あれれ?