2010/10/5(Tue.) t2y
   2.1 リスト内包表記 P. 62 ~
   2.2 イテレータとジェネレータ                 P. 64 ~

       ジェネレータ、コルーチン、ジェネレータ式
       itertools モジュール...
   イテレータ
       繰り返し要素を返すオブジェクトのこと
        for j in [i for i in range(3)]:
           print j                           ...
   イテレータを返す関数を提供するモジュール
       islice: ウィンドウイテレータ
           入力イテレータをスライシングしてイテレータを返す
       tee: 前後方イテレータ
          ...
P.75 他の関数
   イテレータを組み合わせる
     itertools の関数を入力イテレータに使用するこ
      とで様々な用途に応用ができそう
                              08
     ...
P.76 - 79
   デコレータ(decorator)
     関数やメソッドのラッピング処理の見た目を分かり
      易くする
     デコレータ構文を使用しなくても同処理が書ける

     デコレータの良いプラクティス...
   XML-RPC プロトコル                    P.80 - 81

       引数を取るデコレータ
       デコレータ内の処理結果を使いたいときはグロー
        バル変数を使うしかない?
   ...
P.82 - 84
   キャッシュデコレータ
     関数型プログラミングの特徴
     出力が内部状態の影響を受けない

         引数から必ず一意な結果が算出される
         関数を呼び出さず、キャッシュの値...
P.85
   プロキシデコレータ
     Web フレームワークのセキュリティを確保する仕
      組みに利用される?
     Django での使用例

         login_required デコレータ
     ...
P.86
   コンテキストデコレータ
       正しい実行コンテキストでの実行を保証
           例) スレッドのロック
   デコレータでなくても with 文でできるよ
       Python 2.6 以降
   Python デコレータライブラリ        P.87
       インスタンスへメソッドを追加する
           こんな状況あるかな?
       引数の情報収集
           Oreilly2sphi...
P.88-90
   with 文
       try...finally の置き換え
         ファイルを閉じる
         ロックを解除する

         一時的にコードにパッチをあてる

        ...
 with 文のヘルパー関数を提供                        P.91-92
 contextmanager が役に立つ

       yield 文で分割
           yield より前: __ente...
P.93
 リスト内包表記は便利だよ!
 イテレータとジェネレータで効率的に!

 デコレータで新たなコードパターンが!

 try...finally に代わり with 文を!
Upcoming SlideShare
Loading in …5
×

エキ Py 読書会02 2章後半

1,260 views
1,189 views

Published on

2010/10/5 の読書会でお話した内容です。

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,260
On SlideShare
0
From Embeds
0
Number of Embeds
214
Actions
Shares
0
Downloads
1
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

エキ Py 読書会02 2章後半

  1. 1. 2010/10/5(Tue.) t2y
  2. 2.  2.1 リスト内包表記 P. 62 ~  2.2 イテレータとジェネレータ P. 64 ~  ジェネレータ、コルーチン、ジェネレータ式  itertools モジュール  2.3 デコレータ P. 76 ~  引数チェック、キャッシュ、プロキシ、その他  2.4 with と contextlib P. 88 ~  contextlib モジュール  2.5 まとめ P. 93 ~
  3. 3.  イテレータ  繰り返し要素を返すオブジェクトのこと for j in [i for i in range(3)]: print j イテレータ ジェネレータ  ジェネレータ  yield 文を使用して関数を一時停止させ、途中の 結果を生成する def generator(): for i in generator(): for i in [0, 1, 2]: print i yield i
  4. 4.  イテレータを返す関数を提供するモジュール  islice: ウィンドウイテレータ  入力イテレータをスライシングしてイテレータを返す  tee: 前後方イテレータ  オリジナルの入力イテレータから複数の独立したイテレータ を返す(tee コマンド)  groupby: ユニークイテレータ  グループ化した値セットのイテレータを返す(uniq コマンド)  その他の関数 07  ピュア Python で動作の説明がある
  5. 5. P.75 他の関数  イテレータを組み合わせる  itertools の関数を入力イテレータに使用するこ とで様々な用途に応用ができそう 08  imap/izip や starmap で連携  パフォーマンス  メモリ効率が良いので速くなる
  6. 6. P.76 - 79  デコレータ(decorator)  関数やメソッドのラッピング処理の見た目を分かり 易くする  デコレータ構文を使用しなくても同処理が書ける  デコレータの良いプラクティス P.79 Note  汎用的なラッパーとなる処理  ラップした関数の引数、返り値を見るようにして、できるだけそ の関数の内部を解析しないようにすべき 関数の pre/post 処理を実装する 09   1つのモジュール内にまとめる
  7. 7.  XML-RPC プロトコル P.80 - 81  引数を取るデコレータ  デコレータ内の処理結果を使いたいときはグロー バル変数を使うしかない?  関数内部を解析しないようにすべき? def xmlrpc(in_=(), out(type(None),)): def _xmlrpm(function): def __xmlrpc(*args): return function(*args) retrun __xmlrpc return _xmlrpc
  8. 8. P.82 - 84  キャッシュデコレータ  関数型プログラミングの特徴  出力が内部状態の影響を受けない  引数から必ず一意な結果が算出される  関数を呼び出さず、キャッシュの値を返す  やっぱりキャッシュはグローバル変数  メモ化(memoizing)  たらいを回すならHaskell  Python でもチャンレンジしてみよう
  9. 9. P.85  プロキシデコレータ  Web フレームワークのセキュリティを確保する仕 組みに利用される?  Django での使用例  login_required デコレータ  permission_required デコレータ
  10. 10. P.86  コンテキストデコレータ  正しい実行コンテキストでの実行を保証  例) スレッドのロック  デコレータでなくても with 文でできるよ  Python 2.6 以降
  11. 11.  Python デコレータライブラリ P.87  インスタンスへメソッドを追加する  こんな状況あるかな?  引数の情報収集  Oreilly2sphinx  ハンドラ登録  プログラム終了時に実行する  引数のカッコが省略可能なデコレータの実装方法
  12. 12. P.88-90  with 文  try...finally の置き換え  ファイルを閉じる  ロックを解除する  一時的にコードにパッチをあてる  特定環境で保護されたコードを実行する  2つのメソッドを実装したプロトコル  __enter__: with ブロックに入るときに何かする、大抵は self を返す  __exit__: with ブロックを出るときに何かする、クリーンナップ デコレータのコンテキストプロバイダと 10 同様に pre/post 処理を行う
  13. 13.  with 文のヘルパー関数を提供 P.91-92  contextmanager が役に立つ  yield 文で分割  yield より前: __enter__ の処理  yiled が生成した値は as で指定した変数へセット  yield より後: __exit__ の処理  closing: close メソッドの呼び出しを保証する 11  ストリームを扱うクラスに役立つ、例) urllib.urlopen  nested: コンテキストを結合してネストされた with を扱う
  14. 14. P.93  リスト内包表記は便利だよ!  イテレータとジェネレータで効率的に!  デコレータで新たなコードパターンが!  try...finally に代わり with 文を!

×