こわくないPython 補足資料
自己紹介 3DCG Meetup主催。 ! デザイン、スクリプト、3D、 映像等色々やってます。 ! ! 拙著:はじめてのZBrush ! Facebook:新井克哉 ! Twitter:@kickbase ! ! めんたいこと呼ばれています。
なんで「タグ付け」なの? セッション内の説明で変数は「箱」と考えるより「タグ付け」と 考えたほうがいいよというお話をしたんですが、その補足資料です。
Pythonの仕組みを見てみよう -コンピューターは忘れっぽい?-
コンピューターはものすごく計算が速いですが、 実はものすごく忘れっぽくつくられています。 「コンピューターが忘れっぽいって?」と お思いになるかと思いますが、その仕組みを説明しましょう。
コンピュータは計算場所でガンガン計算をします。
でも、計算が終わったら計算結果も含めて消してしまうのです! それは計算する領域を確保しておくためです。
でも、計算結果まで含めて消されてはたまりません。 なんのために計算したのかわからなくなっちゃいますね。
そこで変数の登場です。
保存場所(消さないでおく場所)に変数を用意し、 計算場所にあるデータにひも付けます。
なんと、変数とひも付いたデータは消されないのです!
プログラムの言葉を使えば、 変数とデータ(値)を紐付けることを「参照する」。 コンピュータが自動的にデータを消すことを ガベージコレクションと呼びます。 ! どの変数からも参照されていないデータ(ゴミ)は、 ガベージコレクション(ゴミ収集)されるというわけです。
参照のイメージは「箱に入れる」よりも「タグ付け」に 近いと思いませんか? ! そのため「タグ付け」という説明をしたのです。
続けて実際のPythonコードを見ながら 参照についてもう少し学びましょう。 ! きっとタグ付けの方がイメージしやすいと思います。
出力結果は [1,10,100] [1,10,100] True となります。isというのは「同じかどうか」を調べるものです ※上記isの説明は少し嘘があるので、あとで訂正します
納得の出力結果ですね。
出力結果は [1,10,100] [1,10,100] False となりました。
Why????? Pythonこわい
これもタグ付けで説明できます
aはデータ[1,10,100]を参照し、 bはaを参照しています。
aはデータ[1,10,100]を参照し、 bは別のデータである[1,10,100]を参照しているのです。 別のデータを参照していたので、a is bはFalseだったんですね。
つまりis演算子は、 「同じものを参照しているかどうか」 を表す機能なのです。 ! この「同じ値でも参照元が別にある」という状況は、 変数を「箱」ととらえると説明しにくいのです。
以上、タグ付けの補足でした。 By Katsuya Arai a.k.a めんたいこ