2007-09-12

「Pythonをはじめよう」という記事が指摘しているPythonの良い点

Codezine: Pythonをはじめよう
という記事の以下の一節が目をひいた。


中括弧等を打たなくて良い分ロジックの打ち込みだけに集中できますし

たしかにそうだ。
言われてみて気づいた。
他の言語では、括弧の対応が合っているかどうかをエディタの補助機能を使いながら確認しなければいけないが、Pythonの場合は縦にざっと眺めるだけでその対応(=インデント)が見通せてしまうというのは、いいことだ。

Pythonのそもそもの思想に、「コードは書かれることより、読まれることのほうが多い」というのがあったような気がしますが、インデントは「読まれること」を非常に重視したとてもいい仕様だと思う。

django searchというのを見つけた

django search
というのがあるのを見つけた。
django関連の話題の検索サイトのようだ。
Google custom searchを使っているみたいだが、これはすごく便利そうです。

2007-09-07

[メモ]popen2

以下の記述はうそ。popen2.pyを見ると、bufsizeにはデフォルトで-1が指定してある。自分の環境で止まっているのは、別の理由のようだ。
popen2でプロセスを起動して、返事がなかなか返ってこないなと思っていたら、popen2の引数に渡すbufsizeを超えてデータを渡していたようだ。
このサイズを超えると、無反応でとまってしまうのではまる。

[メモ]sqlalchemyとloggingを同時に使う場合は、loggingという名前がかぶるよ。

import logging
from sqlalchemy import *

というふうにすると、loggingという名前が、sqlalchemy.loggingで上書きされて、loggingが動かなくなる。
import順を逆にするとよい。

[メモ]django.dbでmysqlの文字コード指定。

settings.pyで

DATABASE_OPTIONS = dict(charset="ujis")


参考: http://groups.google.com/group/django-ja/browse_thread/thread/26ff26fccc6258c3
selectはうまくいくことを確認済み。

2007-09-06

[メモ]defaultdictの引数はうまく使えば便利に違いない

defaultdictの引数には普通はintやfloatを入れるもんだが、"lambda :[0,0]"のような無名関数を入れることもできる。

>>> from collections import defaultdict
>>> a = defaultdict(lambda :[0,0])
>>> a["AA"]
[0, 0]
>>> a["AA"][0] += 1
>>> a
defaultdict(<function <lambda> at 0x2a95666938>, {'AA': [1, 0]})
>>> a["aa"][1] += 1
>>> a
defaultdict(<function <lambda> at 0x2a95666938>, {'AA': [1, 0], 'aa': [0, 1]})