エキ py 読書会02 2章前半

11
2010/9/29(Wed.) t2y

Upload: tetsuya-morimoto

Post on 31-May-2015

1.398 views

Category:

Technology


0 download

DESCRIPTION

2010/9/7 の読書会でお話した内容を 9/29 に少し に修正しました。

TRANSCRIPT

Page 1: エキ Py 読書会02 2章前半

2010/9/29(Wed.) t2y

Page 2: エキ Py 読書会02 2章前半

2.1 リスト内包表記

2.2 イテレータとジェネレータ ジェネレータ、コルーチン、ジェネレータ式

itertools モジュール

2.3 デコレータ 引数チェック、キャッシュ、プロキシ、その他

2.4 with と contextlib contextlib モジュール

2.5 まとめ

P. 62 ~

P. 64 ~

P. 76 ~

P. 88 ~

P. 93 ~

Page 3: エキ Py 読書会02 2章前半

使ってみたくなるツール類が

たくさんあります

第2章には

P.61

Page 4: エキ Py 読書会02 2章前半

リスト内包表記

>>> [i for i in range(0,3)]

[0, 1, 2]

Python の内包表記はなぜ速い?

append 属性の取り出し

関数の呼び出し

バイトコード命令数の削減

使えるなら使った方が良い

P.62 訳注

01

Page 6: エキ Py 読書会02 2章前半

イテレータ(iterator)

繰り返し要素を返すオブジェクトのこと

2つのメソッドを実装したオブジェクト

next() メソッド(Python3 では __next__)

__iter__ メソッド

itertool 関数(ライブラリリファレンス)

- 英単語のおさらいiterate: 繰り返す、反復するiterable: 繰り返し可能な(モノ)iteration: イテレーションiterative: 反復のiterant: 反復する

P.64 -65

Page 8: エキ Py 読書会02 2章前半

ジェネレータの用途

イテレータを作成する

巨大なデータ(ファイルやテキスト)を扱い易い

プログレスバー等で途中経過を利用できる

無限に続く特性を持つアルゴリズムを扱う

ソケットやストリームを扱うネットワークを介した処理

フィボナッチ数列のような数値計算

“ループ処理やシーケンスを返す関数を

実装するときには、まずジェネレータの利用を検討すべきです”

04/05

Page 9: エキ Py 読書会02 2章前半

Python Enhancement Proposal

(Python 拡張提案)

Python に変更を加えるための提案書

PEP1: PEP の目的とガイドライン

PEP3138: Python3000 の文字列表現

石本さんの発表資料

P.66 Note

Page 10: エキ Py 読書会02 2章前半

ジェネレータの新メソッド

send: ジェネレータへ値を渡す

throw: ジェネレータへ例外を送る

close: ジェネレータに GeneratorExit を発生させる

Online Python Tutor

3つのメソッドを使用して

コルーチンを実装する PEP342: 拡張ジェネレータによるコルーチン

P.68-69

P.69-71

06

Page 11: エキ Py 読書会02 2章前半

ジェネレータ式(genexp)

>>> (i for i in range(0,3))

<generator object <genexpr> at 0x94b907c>

“yield を使用したシンプルなルー

プや、イテレータのように動作するリスト内包表記は、積極的にジェネレータ式に置き換えるべきです”

P.72 真ん中