« MS Office 2007 | トップページ | 社員1.0 と 社員2.0 »

2006/02/23

Python: Variable

Python の変数は、実体 ( Learning Python 等では " オブジェクト " と書いてあるが、 わたしは関数などもオブジェクトと解釈するのでここでは " 実体 " と書くことにする ) への参照なのだそうだ。つまり、実体へのアドレスが格納されているのである。 C 言語におけるポインタのようなものだが、大きく違うことは型 ( 整数型とか不動小数点数型とか ) の情報は持っていないということだ。型の情報も実体が保持している。

さて、わたしが今回一番言いたいのはこういうことだ。

当然のことながら、私たちが欲しいのは「データ」であって、「データの在り処を示すアドレス」ではありません。そんなものは、もらったところで手間が増えるだけで嬉しくない。この点は、いくら強調してもしすぎることはない。

もちろん、C 言語のポインタも「データの在り処を指し示すアドレス」である。 しかし、プログラマが意識するのは「参照先のデータ」、つまりは実体なのだ。 先に宣言し、作成しておいた実体へのアドレスをポインタに格納し、 これを関数に渡すことで構造体のメンバ変数を直接書き換えたりする。 あるいはポインタの配列を作成して、条件によって呼び出される関数を変える。 などなど、、、どれも実体を頭に入れて使うことになる。 根底にあるのは「アドレスをどうしようか」ではなくて、 実体をどうやって操作しようかということだ。 ポインタは実体を操作するひとつの方法に過ぎず、全てではない。

「実体は意識しなくていいから、とりあえず参照だけを頭に入れてプログラム創ってね」 といわれても、わたしにはどうしてもそれができないのだ。

もしかしたら、わたしの頭が固いだけかもしれない。
または、わたしが誤解しているのかもしれない。
Python の変数を理解する、いい考え方をご存知の方がいましたら ご教授くださいませ。

|

« MS Office 2007 | トップページ | 社員1.0 と 社員2.0 »

コメント

Python固有の話ではないですよね?
オブジェクト指向言語であれば、smalltalkでもC++でもJavaでもJavaScriptでも変数は参照が基本です。
#C++はちょっと特殊ですが。

なぜ、参照でなければならないかは、オブジェクト指向言語の動的多態と呼ばれる機能が関係していますので、そこから調べてみてはどうでしょうか?

投稿: ふまる | 2006/03/04 17時25分

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: Python: Variable:

« MS Office 2007 | トップページ | 社員1.0 と 社員2.0 »