Smalltalk use: better《余録》代入 vs. 束縛

記事一覧Smalltalk use: better
《余録》代入 vs. 束縛 《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
>>> hex(id(a)) '0x2f9b40'
変数 a が未定義だと、例外 NameError を生成して、エラーメッセージを出力します。変数 a にオブジェクト 3 を代入するときには、それを入れるのに「必要な大きさの箱」が用意されるはずです。
>>> b = 4
>>> hex(id(b))
'0x2f9b50'
    
>>> hex(id(a)) '0x2f9b50' >>>

変数:束縛モデル

束縛された状態のオブジェクトは、誰かが参照する可能性があるので、リサイクルの対象にはなりません。 》作業中です《
Last updated♪2009/07/20