#文字列、タプル、範囲とリスト
テキストの5.5節はタイトルに挙がっている4つの順序型の共通点と相違点の列挙と文字列型の持っている各種メソッドの話なのでスキップ。
#辞書
「5.6 辞書」の説明は読めば読むほど...
- キーの検索にハッシュを用いてキーのサイズに依存しない検索時間を実現する、とか
- for文の反復の変数に割り当てられるのはキーの方である、とか
- 反復のキーの順番は決められていない、とか
完全にJavaのHashMapです。
「辞書に対する主な命令」に挙がってる各種の命令もおなじみなやつばっかりだし。
そう考えると「キーとして使えるのはハッシュ可能な型のオブジェクトのみ」というのは当然に思える。
Pythonのすべての組み込み不変型はハッシュ可能で、すべての組み込み可変型はハッシュ可能ではない。
というのはたぶんエイリアスの問題で勝手にKeyの内容を変えられたりしたら困るからなんだろうね。
ここで5章は終了。
引き続き6章の「テストとデバッグ」を読む。
#テストとデバッグ
6章は別にPythonやらない人間でも、今まで体系的なテスト理論に触れたことのない人間には役に立つ記述が目白押しになっている。
テストとデバッグに関する簡潔で要点を得た記述がきちんとまとまっているのはさすがと言わざるを得ない。
個人的に特に白眉だと思われるのは「6.2.3 手強い状況では」と「6.2.4 そしてそのバグを見つけたら」だと思う。
「6.2.3 手強い状況では」には通り一遍のデバッグでは見つからないような状況に出くわした場合に状況を改善するヒントが書いてあるし、「6.2.4 そしてそのバグを見つけたら」ではバグを発見したときに短絡的に飛びかかって更なる問題を引き起こさないようにするための心得が書いてある。
個人的に「6.2.3 手強い状況では」の好きなところをいくつか紹介すると...
- **プログラムがなぜ思いどおりに動かないのか自問することをやめよ、その代わりに、なぜそのように動いているのか自問せよ。**その問いの方がおそらく答えるのは簡単であり、どのようにプログラムを直せばよいかを見定める最初の一歩となるだろう
- **バグは想定したところにはおそらく存在しないと心得よ。**もしそこにあるのならばもっと早くに見つけていたはずだ。どこを見るべきか決めるための1つの現実的な方法は、バグが存在しえないところはどこかを問うことである。
- **ほかのだれかに問題を説明してみよ。**盲点は誰にでも存在するが、問題を誰かに説明しようと試みるだけで、見逃していることが見えてくる場合がよくある。説明を試みる際には、ある特定の場所にバグが存在しえないことを説明してみるとよい。
- **読んだことすべてを信用するな。**とくに、ドキュメントは信じてはならない。コードがコメントどおりに動くとは限らない。
- いったん手を引き、明日に再び試みよ。
個人的には最後が一番お気に入りw
しかしコードとコメントの整合性問題は洋の東西を問わないんだなあ...w
というわけでご飯食べるのでいったんここまで。