読者です 読者をやめる 読者になる 読者になる

エキスパートPythonプログラミング読み(2)

エキスパートPythonプログラミング

エキスパートPythonプログラミング

2章 構文ベストプラクティス クラス以外

 →中にある要素をnext()で取り出す

  • ジェネレータ

 →yield
  →処理の途中の値を返す

 →ループ処理やシーケンス(並んだ順番)で返す関数はまずジェネレータ

 →sendメソッド
  →sendから送られた値を受け取れるようになった
   →外部からデータを送れる

 →コルーチン
  →複数の箇所で実行を一時停止・再開する
  →Pythonではスレッドを使う
  →複数のクライアントからクエリを受け取るときとかに使う。

 →ジェネレータ式
  →()を使って、リスト内包表記の書き方でかく
   →yieldの代わり
    →イテレータのように動作するリスト内包表記は、ジェネレータ式使う

 →itertoolsモジュール
  →islice
   →特定の場所からイテレータを動かしたいとき
  →tee
   →データの再処理に使用
  →groupby
   →Unixでのuniqと一緒
   →「get uuuuuup」だったら「1g1e1t5u1p」って返す

  • デコレータ

 →関数やメソッドをラッピング、見た目をわかりやすく
  →ラッピングって何
   →受け取った関数を拡張して返す
  →クラスメソッドに@でやってくれる
 
 →元の関数を呼び出すサブ関数を定義し、それを返す
  →やっちゃうと元の関数をラップしちゃって変わっちゃう
   →functoolsの@wrapsで大丈夫

 →使うならラッパーのみ。他のメソッドや関数に適用できないなら、デコレータは×

 →用途
  →引数チェック

  →キャッシュ
   →利用頻度が高いものをデータに保存
   →メモ化
    →サブルーチンの呼び出し結果を持って再計算を防ぐ

  →プロキシ
   →代理としてネットに接続

  →コンテクストプロバイダ

わかってないに等しいな...orz