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