Python.use(better)《余録》代入 vs. 束縛 #1

記事一覧Python.use(better)
《余録》代入 vs. 束縛 #1《Python3.1》

《著》真樹育未《監修》小泉ひよ子とタマゴ倶楽部
第0版♪1988/10/12

Smalltalk-80 セミナー用に作成したテキスト(1988)をもとに、Jython 版(2003)を経て、Python 版(2009)として加筆/再構成した余録集です。

変数の生涯

変数の生涯を図解すると、次のようになります。


変数に期待される機能は、次のようなものです。

  • 束縛を更新(生成)する
  • 値を参照する
  • 束縛を削除(無効に)する

未束縛の変数を参照しようとすると、例外 NameError を生成します。

変数:束縛モデル


■ 変数を参照する(未定義)
    
Traceback (most recent call last): File "", line 1, in NameError: name 'a' is not defined
変数 a が未定義だと、例外 NameError を生成して、エラーメッセージを出力します。
■ オブジェクトを束縛する
    
変数 a はオブジェクト 3 を束縛します。これは、オブジェクト 3 にタグを付けたことになります。
■ 変数を参照する
    
3 >>> hex(id(a)) '0x2f9b40'
変数 a の値を参照すると、オブジェクト 3 が得られます。オブジェクトの識別情報を確認すると、0x2f9b40 が得られます。
■ 変数を削除する
>>> del a
>>> a
Traceback (most recent call last):
  File "", line 1, in 
NameError: name 'a' is not defined
変数 a を削除すると、オブジェクト 3 は束縛を解かれます(未束縛)。すると、前のように、例外 NameError を生成して、エラーメッセージを出力します。
>>> hex(id(3))
'0x2f9b40'
変数の存在(介入)の有無は、オブジェクトに影響を与えないので、オブジェクト 3 は、束縛を解かれた後も存続します。再び、オブジェクトの識別情報を確認すると、前と同じ 0x2f9b40 が得られます。

Tips

》作業中です《
Last updated♪2009/07/23