このところ業務でpythonを使い始めた。
多少の勉強は去年の年末ごろにしていた。参考書にしたのは『Pythonスタートブック』。ブログラミング自体まともにやるのは初めてだったので、それも兼ねて勉強になりそうな本を見繕ったが、これは正解だった。
ついでにこの時オライリーの『初めてのPython』も一緒に買ったのだが、こちらは完全に本棚の肥やしになっていた。
ゴキブリを叩くにも重たすぎるし、ゾンビと戦うにはリーチがなさすぎる(『ゾンビサバイバルガイド』にはオライリー本で戦うなとは書いていなかったが、たぶん書くまでもなかったんだろう)。
最近、業務でpythonを扱うようになったので、この本棚の肥やしを読み始めてみた。
以前めくった際には「何をチマチマ言ってるんだ・・・。」という感じだったが、今はそのチマチマしたことに知的感動を覚えている。
例えばこれ
[python] a = 3 b = a a = 'spam' [/python]
「pythonでは変数は、データ型の情報を保持することのないオブジェクトへのリファレンスである。」そんなことになんの意味があるのかと思っていたのだが、その意味がわからなかった自分がアホだった。
まず一度は数値型の3だったaを、ためらいなく文字列型の'spam'に変更できる。
さらに2行目の「b = a」はbとaを関連付けているわけではなくて、ただbにaに代入されているオブジェクトを代入しているだけ。だからaを'spam'に変更したあともbは3のままだ。
ただし可変データ型のリストの場合はこうはならない。
[python] L1 = [2, 3, 4] L2 = L1 L1[0] = 24 [/python]
参照されるオブジェクト自体が3行目で書き換えられるので、L1、L2ともに[24, 3, 4]になる。
コードを書いている最中にこういう事態に見舞われたら、不幸極まりない。どこで問題が発生しているか、特定できる気がしない。
一方でこういうウラガワの仕組みを知らないとわからないことを知るのは、非常にエキサイティングだ。
鈍器として使用する前で本当に良かった。