2008 Feb 21st
みんなのPython日本のPython界のボスである柴田さんの書いたみんなのPythonを読みました。 Python への再入門と思って読んだのですが、あらためて勉強になりました。多少は知っているつもりだったのですが、知らないことが山ほどあって結構驚きました。以下、そういう点のメモ。
- P.143: アンパック代入
>>> 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
Leave a comment
Required fields are marked with *
search
calendar
Feb 2012
SunMonTueWedThuFriSat
   1234
567891011
12131415161718
19202122232425
26272829   
archives
photos on flickr
www.flickr.com