2008
Feb
21st
日本のPython界のボスである柴田さんの書いたみんなのPythonを読みました。 Python への再入門と思って読んだのですが、あらためて勉強になりました。多少は知っているつもりだったのですが、知らないことが山ほどあって結構驚きました。以下、そういう点のメモ。
- P.143: アンパック代入
- P.182: 文字コードのわかっているファイルの読み込み
ファイルの文字コードがあらかじめ分かっていたら、
- P.196: インポートしたモジュールがインポートしているモジュールを使う
- P.210, 211: urlopen() が返すオブジェクトで利用できるメソッド
geturl() を使うと、リダイレクトされた場合に結局どの URL にアクセスしたことになるのかがわかる。
- P.299-305: クラスの特殊メソッド
クラスに __add__() などのいくつかの特殊メソッドを記述することで、オブジェクトの挙動をあれこれできるという話。
- P.313: トレースバックの表示
traceback モジュールを使って適切なログを吐けば良いという話。
- P.323: shelve を使った辞書のシリアライズ
shelve でシリアライズできるのは辞書だけだけど、明示的にファイル書き出しをしなくても良いという話。
他にもいろいろと勉強になったのですが、復習とかやり直しとかになりました。
>>> tmp = a >>> a = b >>> b = tmpと、一時変数を使わなくても
>>> a, b = b, aで OK。
- P.182: 文字コードのわかっているファイルの読み込み
ファイルの文字コードがあらかじめ分かっていたら、
>>> f = file('euc.txt', 'r')
>>> p = f.read()
>>> up = unicode(p, 'euc-jp')
>>> f.close()
としなくても
>>> import codecs
>>> f = codecs.open('euc.txt', 'r', 'euc-jp', 'ignore')
>>> up = f.read()
>>> f.close()
で OK。 - P.196: インポートしたモジュールがインポートしているモジュールを使う
>>> import a
>>> a.urllib.quote('<tag>')
'%3Ctag%3E'
とできる。こういう使い方をすることがあるかどうかは別にして。- P.210, 211: urlopen() が返すオブジェクトで利用できるメソッド
geturl() を使うと、リダイレクトされた場合に結局どの URL にアクセスしたことになるのかがわかる。
>>> f = urllib.urlopen('http://matatabi.homeip.net/')
>>> f.geturl()
'http://matatabi.homeip.net/blog/setomits'
また、 info() を使うとメタ情報オブジェクトにアクセスできる。>>> f.info().keys() ['date', 'content-length', 'content-type', 'connection', 'server']
- P.299-305: クラスの特殊メソッド
クラスに __add__() などのいくつかの特殊メソッドを記述することで、オブジェクトの挙動をあれこれできるという話。
- P.313: トレースバックの表示
traceback モジュールを使って適切なログを吐けば良いという話。
- P.323: shelve を使った辞書のシリアライズ
shelve でシリアライズできるのは辞書だけだけど、明示的にファイル書き出しをしなくても良いという話。
他にもいろいろと勉強になったのですが、復習とかやり直しとかになりました。
Posted by setomits at 01:22 |
Comments: 0