2012年1月18日水曜日

エキスパートPythonプログラミング読書会 第二期 03

エキスパートPythonプログラミング読書会 第二期 03
に参加してきました。
今回は定時ダッシュを決められたので、
あまり走らずに済んでよかったです。

1.アイスブレイク
各島ごと(6名程度)で5分間の自己紹介を行いました。
自己紹介順に、
@Qooh0さん、@aodagさん、@drillbitsさん、
@usaturnさん、そして清水川先生でした。

ここでは清水川先生と
「お正月にお雑煮を食べたことがない」
という話題で盛り上がりました。
清水川先生は先日初めてお雑煮を食べたそうです。
自分は未だに食べたことがありません……

2.読書会
前回に引き続きこの本の中では言語として一番難しいところでした。
ツイート数も少なかったように感じます。

  • islice
         -イテレータ向けのslice関数
         -ウィンドウに見えているところにだけ切り出している。
         -オブジェクトの実態を変えずに、VIEWを参照している。

  • tee
         -Unixのteeと同じなはず。2つに分けるのがtee
         -一時的に先読みしたい時先ので読み込んで、必要なら全部読み込むなどできる。
         -最初の数バイト読み取って置いて、
        もう片方はまったく受け取っていないオブジェクトとして、
        そのまま使いまわすことができる.

  • groupby
         -個数が入っているわけではない。a a a a などになっている。
         -カウントが欲しい時は自分でカウントの処理を書いてやる。
         -「aabbcda」のような後ろの方にあるaは取れない。
         -数を数えたい時はソートして同じ物を整列させて挙げる必要がある。
         -目的次第で分けて考える。
         -GAEだと泣きそうになるほど使うそうらしい。

  • imap, izip, ifilter
         -python3でimap, izipがmap, zipになる。
         -filter reduce は残るが、グローバルの組み込み関数でなくなる
         -(2012/01/25 0:30追記:functools.reduceに移動する)      -リスト内包表記でできるのはなくなっていく方向らしい。
         -関数型言語で使っているような表現をそのまま使っっている。

         -itertoolsはジェネレータ普通に使おうとするとよく使うが、
        やってみないと感覚がつかめない。

  • オペレーターとlambda
         -オペーレーターモジュールにあるよってツッコミがある。
        しかしlambdaの方が短くていいじゃんという意見もある。
        「標準モジュールをつかってやるのは悪いこっちゃ無いです。」

  • デコレータ
         -Pythonには、"クラスメソッド"、"インスタンスメソッド"がある。
         -@がついているものは関数呼び出しで、
        その直後にくるメソッドを読み込んで渡している。
         -普通はちょっとした処理を追加したい時にデコレータを使う。
         -デコレータは実装しようとすると難しいので、まずは使ってみたほうがいい。
         -デコレータはオブジェクトを受け取れればなんでもいいので、
        クラスでも、関数でも呼び出し可能であればなんでもいい。

  • with
         -try~finallyとclose()が要らなくなる。
         -with文に対応するには、withプロトコルに対応している必要がある。
        →  __enter__, __exit__
         -DBとかLibraryとかだとだいたい実装してくれているので、
        書くことはほとんどない。

         -清水川先生もwithが出た当時はそれほど試さなかった。
        本を訳すまでは使ったことなかった。
        なので、こんなものがあったなあと必要な時に思い出してくれれば。

  • contextlib
         -yield文で分割している。
         -yieldより前が__enter__相当、yieldより後が__exit__相当
         -closing:ファイルとかだと勝手にクローズしてくれるが、
        してくれないやつはこれを使うことでcloseを呼び出す。wrapper。

  • デコレータの注意点
         -デコレータを使うと、関数がラッパー関数になり、引き剥がしができない。
         -デコレータにする以前の状態にできないので、
         テストの時毎回通ってしまうという問題も。

  • ツイート数が少なかったのとは別問題かと思いますが、
    初めてTwitterでの質問を最後になるまで拾わなかったですね。
    内容を理解するのでお腹いっぱいでした。
    書き上げた内容もまだまだ説明が足りていない気がします。

    3.ビアビッシュ
    今回は予めビアビッシュの時間に
    LT枠を取ってやろうという初の試みだったわけですが、
    なんと発表予定者が全員キャンセルしてしまうという非常事態に。

    なので当日公募という形で行われました。
    行われたのは、
  • 主催の@tfmagicianさんのmongoDB即興セットアップ

  • PyPyの方のPyPy紹介(お名前を失念してしまいました。すみません。)

  • @aodagさんのメタクラスプロトコル解説


  • @aodagさんのメタクラスプロトコル解説は特に印象的でしたね……
    "メタクラスプロトコル"という名に
    似合わぬファンシーな感じのスライド
    あれは注目の的でしょう。
    内容もすごく濃かったと思います。

    「どのネタがいい?」と聞かれた時は、
    「えっ。何本あるんですか?」と驚きました。
    10本くらいは準備しているそうです。

    "いつ来るか分からない15分のために常に準備をしているのがプロ"
    "来ないかもしれないからと言って準備をしないのがアマチュア"
    とどこかで見たことがあります。

    自分はまだまだですね。
    いざと言う時に自分の力を出し切れるようにしたいです。
    (追記:Gigazineでした。リンクはこちら)

    次回の日程も既にconnpassにでています。
    日程を聞いた時はまさかと思いましたが、どのようになるのか楽しみです。
    エキスパートPythonプログラミング読書会 第二期 04

    参考リンク
  • Togetter:エキスパートPythonプログラミング読書会 第二期 03

  • エキ Py 読書会02 2章後半
  • 2 件のコメント:

    1. filterではなくreduceでした。reduceはfunctools.reduceに移動しています。

      返信削除
    2. 清水川先生、ご指摘ありがとうございます。
      修正させていただきます!

      返信削除