Python文法詳解を詳解する会 #6 まとめ

2015年7月2日(木)に開催された「Python文法詳解を詳解する会 - 第6回」に関するまとめです。 http://python-in-depth.connpass.com/event/16636/ 講師は「Python文法詳解」の著者@atsuoishimotoさんです。 誰でも編集可能にしていますので、追加したい、デコりたいなどございましたらお願いします。 続きを読む
2
Atsuo Ishimoto @atsuoishimoto

Python文法詳解を詳解する会 - 第6回 python-in-depth.connpass.com/event/16636/ #pygrambook 今回のポイントはイテレータ・ジェネレータあたりか

2015-06-26 14:54:41
mokuzu_tw @mokuzu_tw

今日の目標は、さっさと仕事片付けてこれに行く。行ける自信ないので申し込んでないw> Python文法詳解を詳解する会 - 第6回 python-in-depth.connpass.com/event/16636/ #pygrambook

2015-07-02 09:26:02
Daigo Akane (赤根 大吾)💉x4 @dgakane

業務が終わらずキャンセルしました。 orz 参加者の方のツイートに期待しています。。 Python文法詳解を詳解する会 - 第6回 python-in-depth.connpass.com/event/16636/ #pygrambook

2015-07-02 17:16:31
のぶクマ🐻葬送のクマーレン @kumar0001

デコレータ:関数を引数にとり、関数を返す関数 #pygrambook

2015-07-02 19:05:05
のぶクマ🐻葬送のクマーレン @kumar0001

@デコレータ def 関数名(...): ...でデコレータでラップした関数で関数名の定義を置き換える #pygrambook

2015-07-02 19:05:51
のぶクマ🐻葬送のクマーレン @kumar0001

デコレータに使うオブジェクトは関数以外でも、呼び出し可能なオブジェクトなら指定できる(クラスとか) #pygrambook

2015-07-02 19:08:17
のぶクマ🐻葬送のクマーレン @kumar0001

デコレータが適用されていることは記録に残らないので分からない(デコレータでラップした結果で元の関数を置き換えてしまう) #pygrambook

2015-07-02 19:20:52
のぶクマ🐻葬送のクマーレン @kumar0001

クラスを受けとってクラスを返す関数で、クラスデコレータも作成できる #pygrambook

2015-07-02 19:22:05
NAKAMURA, Tomohiro @tomoh1r

readinto() buffer を確保してメモリ効率良くファイルを読み進めることができる #pygrambook

2015-07-02 19:47:43
NAKAMURA, Tomohiro @tomoh1r

便利だ #pygrambook 2系 >>> 'あ' '\xe3\x81\x82' 3系 >>> 'あ' 'あ'

2015-07-02 19:57:55
のぶクマ🐻葬送のクマーレン @kumar0001

オブジェクトの文字列表現: reprは実行時情報を付加。__repr__を定義することでrepr()の結果をカスタマイズできる。 #pygrambook

2015-07-02 19:58:00
のぶクマ🐻葬送のクマーレン @kumar0001

Iterableオブジェクトの__iter__を取得して、forなどのループで使われる #pygrambook

2015-07-02 20:27:41
のぶクマ🐻葬送のクマーレン @kumar0001

もしくはiterable.__getitem__があること>iterableオブジェクト #pygrambook

2015-07-02 20:28:38
のぶクマ🐻葬送のクマーレン @kumar0001

iterable.__getitem__のindexは0から1ずつ増やした値を渡される #pygrambook

2015-07-02 20:37:31
のぶクマ🐻葬送のクマーレン @kumar0001

iter()でCallableなオブジェクトからIteratorを作ることもできる #pygrambook

2015-07-02 20:38:43
のぶクマ🐻葬送のクマーレン @kumar0001

ジェネレータ: イテレータオブジェクトを作って返す関数 #pygrambook

2015-07-02 20:45:57
のぶクマ🐻葬送のクマーレン @kumar0001

ジェネレータは定義時には関数本文を実行せず、イテレータを返す。nextなどで値を取得すると、最初のyield式までを実行して、その式の値を返す。 #pygrambook

2015-07-02 20:50:25
のぶクマ🐻葬送のクマーレン @kumar0001

nextのたびに次のyield式まで実行、yieldがなくなったらStopIteration例外を発生して、ループ終了 #pygrambook

2015-07-02 20:53:00
のぶクマ🐻葬送のクマーレン @kumar0001

ジェネレータでのtry-finallyなど、ジェネレータが解放されるタイミングで処理が実行される場合がある #pygrambook

2015-07-02 20:59:30
のぶクマ🐻葬送のクマーレン @kumar0001

ジェネレータの実行途中で終了したり、参照をなくすのを試してみた。こうなるのね #pygrambook pic.twitter.com/6qL3wz3iY8

2015-07-02 21:01:25
拡大