
209
6.3 名前空間とスコープ
6.3.1
グローバル名前空間
モジュールの名前空間は辞書オブジェクトで管理されており、モジュールオブジェクトの
__
dict__
属性としてアクセスできます。グローバル変数の作成や更新・削除は、すべてモジュール
の
__dict__
属性を更新して行われます。
>>> spam = 'ham' #
グローバル変数
spam
を作成
>>> import __main__ #
コンソールで実行中の
__main__
モジュールをインポート
>>> __main__.__dict__['spam']
'ham'
>>> __main__.__dict__['spam'] = 'egg' # spam
の値を変更
>>> spam
'egg'
>>> del __main__.__dict__['spam'] # spam
を削除
>>> spam
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'spam' is not defined
関数などの実行中にグローバル名前空間を検索するとき、検索対象となるグローバル名前空間
は、常にその関数を作成した、グローバル名前空間です。その関数を作成した
def
文が記述されて
いるモジュールが、グローバル名前空間となります。
例えば、モジュール
spam
で関数
func_spam
が定義されているとき、もう一つのモジュール ...