著者より献本御礼。

日本で Python がいまいち普及していない理由は、こういう本がなかったからかも知れない。カジュアルでフルーガルな、いままでありそうでなかった一冊。

本書「Pythonポケットリファレンス」は、「実践Python」の著者の一人が、「習うより慣れろ」のスタンスで書いたPython本。

目次 - 書籍案内:Python ポケットリファレンス|gihyo.jp … 技術評論社
Part1 基本とルール
01 インストールと環境設定
02 Hello Python
03 Python の特徴と強み
04 Python 入門
05 数値
06 文字列
07 フロー制御
08 リストとタプル
09 辞書
Part2 プログラミング
10 オブジェクト
11 関数
12 モジュールとパッケージ
13 クラス
Part3 実践
14 テスト
15 ファイル
16 関数型プログラミング
17 データ
18 ネットワーク
19 モジュール
29 Python2.6 およびPython3.0 の新機能
著者プロフィール

本書の美点は、なんといってもその小ささ。動物本の半分の四六版で、400ページ弱というのは、体積にして「初めてのPython 第3版」の1/4。Lightweight Language には Lightweight な本がよく似合う。この点で Python は特にひどかったので、この点だけでも本書を勧める。税込み 2,604 円と財布にやさしいのもよい。

説教くさくないのもよい。Pyhton本がなぜあれだけクソ分厚いかといえば、なんといっても説教の多さだろう。

404 Blog Not Found:もはや入門書というよりバイブル - 書評 - 初めてのPython 第3版
一つは、著者--に限らず Pythonistas というのは、「どうやる」、「なぜそうか」に加えて「なぜそれが正しいのか」を語りたがる癖があるから。小姑といえば小姑ではあるが、懇切丁寧といえば懇切丁寧である。Pythonたんが実在したとしたら、委員長に違いない。ぜったい違いない。

それで「Pythonもういいです」となった人も結構いるのではないか。

とはいえ、一言言わないと気が済まないのが Pythonista という人種なのか、本書にも説教がなくはない。で、私が一番引っかかったのも、そこ。

P. 39
def even(xs):
    return [x for x in xs if x % 2 == 0]

xs = range(1, 10)
print even(xs)

def even(xs)
    return xs.select{|x| x % 2 == 0 }
end

xs = 1..9
p even(xs);

sub even{
    my @xs = @_;
    my @a;
    for my $x (@xs){
        push(@a, $x) if $x % 2 == 0;
    }
    return @a;
}

@xs = (1..9);
@a = even(@xs);
print "@a\n";

これはさすがにちょっとひどい。著者が Perl に不案内ということもあるのだろうが、Pythonでリスト内包表記を使っていて、RubyでArray#selectを使っているのであれば、Perlでそれに相当するのはgrepだろう。

sub even{
    grep { $_ % 2 == 0 } @_;
}

print even(1..9), "\n";

このサンプルを使っても、Perlへの批判はなお成り立つ。いやより成り立つ。$_@_という、格好の対象があるのだから。

私ははっきり言って Python の哲学は好きになれない。でも Python のコードは好き。「動く pseudocode 」としてのチャンピオンは、今や Python だ。Python はもっと知られ、もっと使われて良い。 Pythonistas のみならず、 Perl Mongers のためにも、 Rubyists のためにも。

Dan the Polyglot

追記:というわけで、Pythonistasに質問。ワンライナーはどうしているのでしょうか。まさか/usr/bin/pythonをログインシェルにしているとか....