(続き)「エキスパートPythonプログラミング読書会 第二期 02」参加してきました。

感想は前回述べたので、今回は本編についてのまとめ
●リスト内包表記
    -mapより速い
        前はmapを使っていたが、mapはあくまで関数
        リスト内包表記は内部処理としてあるので、リストの方が早い
    -enumerate関数
        ループ処理でインデックスやカウンタを使いたい時に便利
    -リスト内包表記は慣れると書きやすて便利
        だけど可読性が低くなるときはfor文などの読みやすい方にする
        そのほうがPythonic
●Pythonic
    -Pythonのインタラクティブシェルで、
    import this
    と打つとそのThe Zen of Python、その世界観に触れることができる
●イテレータ
    -nextメソッド、__iter__メソッド
        プロトコルに問い合わせる関数
    -「プロトコル = アダプター」
        lenもアダプター
        シンタックスの分かりやすさを、
        ”アダプターをかましている”という考えだとしっくりくるかなと
    -イテレータプロトコルはどこで誰が定義したの?
        →リファレンスマニュアルに規約が乗っている
        →いまだとabc(抽象基底クラス)や仮想クラスのような形で、
        に乗っている
        ここを満たしていると、よりモダンな感じになる
    -たとえると、
        単にラップされていて、
        必要なものに必要な処理をするための橋渡しをしている
        コンセントのアダプタを意識すると分かりやい
        (海外にいくと必要)
        プロトコルに対応されていると、
        それはイテレータであることを保証している
        (ダックタイピングの話)
        ただそれだとゆるすぎるから、
        isインスタンスで証明できるようにしている
        改行コードを受けった時に改行単位で、行読み出しなど
        好きな単位でnextで読み込みできる組み込みでもある
        関数など使わなくても、for文回せばいいのねという認識になる
●ジェネレータ
    -yield
        yieldがあるとジェネレータになる関数ではない
        returnだと関数になるが、
        yieldだとジェネレータの中にreturn書くなと怒られる
    -StopIterationはお約束で、ループを抜けるために必要

   -ジェネレータはイテレータプロトコルを実装しているので、
     多段にyieldとかやるとメモリをほとんど食わずに、
     ほぼ無限長のものを扱える
     20GBのログなども落ちずにできると思う
    -フィルタ条件とか色々かましたくなってくると便利になってくる
    -sendメソッド
        ジェネレータを外からコントロールすることは不可能だったけど
        Python2.5でsendメソッドを搭載したので、
        コントロールできるようになった
        初期化の時はsendは使えない
        最初にnext使ってやらないといけない
        ジェネレータのそれ以降の動きを方向転換することができるのが、
        sendのいいところ
    -closeメソッド
        close()を渡すとexceptionを発生させる→finallyで拾う
●PEP
    -Python Enhancement Proposal(Python拡張提案)
    -PEPはPythonのモダンな仕組みを取り入れるためのもの
    -PEP8はPythonのコーディング規約を書いたもの
    -組み込みだとタスク
    -スレッドだとデッドロックを考慮する必要がある
●ジェネレータ式
    -リスト内包表記だと最初にメモリを食ってしまうため、
     順次処理ならジェネレーターで
    -順次処理系だとDBで1行(カーソル)を取り出していって、
     ジェネレーターでやると10万行一気に読みこまないで済むので便利
●range()とxrange()の違い
    -xrange()はオブジェクトを返している
    -xrange()はPython3でrange()になるためいらないと思われ
    -清水川せんせはほとんど使っていない
    -10万のrange() を作る時は有効ではある
取っていたメモを元に書いてみました。
過不足ありそうですが、ひとまずこれにて振り返り終了。
@tfmagicianさんのツイートにもあったけど、
清水川せんせのライブコーディングのログがあったらなあと。
ブログ書いてて思い出せない所があったりして、
もどかしい思いもしたので次回からは是非残して欲しいと思う。