yieldで妄想
2007/12/05
衝動的に、pythonの本を買いました。なぜか急に。(http://dame.dyndns.org/misc/llahp/ でも rubyを勧められたのに)
まだまともに読んでないのですが、飛ばし飛ばし眺めてみたら、generator、yieldが出てきました。 generatorという機能は、pythonの他の機能と比べても異質に感じました。正直、「なんで急にこんな強力な機能の説明がいきなり出てくるんだろう。」と。
と思いつつも妄想をしたのでメモっときます。 (以下、妄想コードなので、文法的に正しいかもわからないし、動きません)
def webapp(): context = {} while True: request = accept_request() if request.action == 'login': context['name'] = request['name'] output_response(200, ("Content-Type: text/html"), "<html><body>ログインした</body></html>") yield True if request.action == 'list': output_response(200, ("Content-Type: text/html"), "<html><body>一覧画面</body></html>") yield True if request.action == 'logout': context = {} output_response(200, ("Content-Type: text/html"), "<html><body>ログアウトしました。</body></html>") yield True else: output_response(404, ("Content-Type: text/html"), "<html><body>not found.</body></html>") yield False for res in webapp(): pass
これを、サーバで常駐させて、継続ベースのWebアプリ?
ごめんなさい。継続のことも全く理解してないんですが、やっぱりpythonのyieldは継続ではないそうです。
というか、yieldが作るのはジェネレータであって、継続ではない。
Pythonのyieldは継続じゃない
なので、上のコードは、あくまで妄想ということで。。。
暇があったら、また考えます。