soy-curd's blog

へぼプログラマーです [https://twitter.com/soycurd1]

「Python文法詳解を詳解する会 - 第6回」に参加した

先週の木曜、「Python文法詳解を詳解する会 - 第6回」に参加した。会の名前の通り、Python文法詳解を詳解していく会だった。内容はデコレータ、イテレータ、ジェネレータ、というかんじで、自分的には、以下の文法に発狂感を覚えた。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-


def spam():
    sent_1 = yield u"1個めのyield" #....yieldが...代入...してる...!
    print(sent_1)
    sent_2 = yield u"2個めのyield"
    print(sent_2)
    yield u"3個めのyield"


gen = spam()
print(next(gen))
print(gen.send(u"1回目のsend"))
print(gen.send(u"1回目のsend"))

# output
# 1個めのyield
# 1回目のsend
# 2個めのyield
# 1回目のsend
# 3個めのyield

...どうやらyieldは式なので、"yield xx"っていうそれ自体が値を持てるらしい。だからyield的には、

「next( )されたか...じゃあこっちはをxxを投げるぞ!受け取ってくれ〜」

「お、send("hoge")されてるじゃん...さて、"hoge"を左項に渡しとくか...」

という雰囲気という理解。ジェネレータと外界との値のやりとりに使えるようだ。(しかし、この機能を使ったプログラムを制御できる自信はないなあ。。。)

というわけでpythonのお勉強をできたわけだけれど、びっくりしたのが、講師の方が「Python文法詳解」の著者だったことで、東京ってすごいなと思った。帰りには著者+他の参加者と一緒にビールも飲めたし、東京のコスパやばい。人生力高まった気持ち。

Python文法詳解

Python文法詳解