Ryn's Web Page
変数
- 変数名は、プログラムにおいて必要なデータを適切なデータ型でメモリ上に置き、処理をする為の場所の目印。
変数の値は、その場所に記憶されている値。適宜、処理に応じて記憶している値を書き換える事が出来るので、変数。
その実体は、データ型のインスタンス。
Pythonの変数のデータ型は、右辺から代入される値で判断して自動的に(=勝手に)決めているので、
プログラマは余り気にする必要は無くなっているが、注意していないと、エラーにつながる。
同じ変数名なのに、処理の過程で勝手にデータ型が変わる場合も有る。
プログラマは、プログラムを書く際に、そのデータの場所が、実際にプログラムを実行する際に
何番地になるのか、なんて考えたくないし、プログラムを書き変える毎にその番地は当然変わるので面倒臭い。
そこで、とりあえずプログラマにとって判り易い名前で目印を付けておき、
実行した際に何番地になるのか、は、処理系やOS等に任せてしまえ、
というのが、変数名。
C言語の変数名は「実際に値が有る番地」を示すが、
Pythonでは『「実際に値が有る番地」を記憶している番地』を示し、
しかも「実際に値が有る番地」は処理の過程で頻繁に変わるので、単なるポインタの心算でいると要注意。
- Pythonの変数や要素は、必ずデータを格納した形で宣言され、格納されたデータを基準に勝手に型を決められるので、
プログラマは、変数に対し、データ型を明示しなくとも作る事が出来る。
お手軽だが、特に大きなプロジェクトの場合、全体の見通しが悪くなり、トラブルの元になる事もある。
-
*** 重要 ***
変数の型の明示は人間のメモでしか無く、実際にその型になっているとは限らない。
また、処理の過程で、同じ変数なのに、途中で型が変わる場合がある。流石、「変数自体がポインタ」の威力?
同じ変数aなのに、代入される値によって、変数のデータ型が変わる例。
対話モードでの実行例
同じ変数aなのに、文字列が数値になったり、その逆になったりするのは、
プログラムとして流石に「何だかな~」と思うが、
整数型から浮動小数点型になったり、その逆になったりするのは、
データ型に無頓着なプログラマならば、違和感は持たないだろうな。
Pythonでは、整数、小数、に関しては、そんなに型を気にするな、という事の模様。