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 Trueif request.action == 'list': output_response(200, ("Content-Type: text/html"), "<html><body>一覧画面</body></html>")yield Trueif request.action == 'logout': context = {} output_response(200, ("Content-Type: text/html"), "<html><body>ログアウトしました。</body></html>")yield Trueelse: output_response(404, ("Content-Type: text/html"), "<html><body>not found.</body></html>")yield Falsefor res in webapp():pass
これを、サーバで常駐させて、継続ベースのWebアプリ?
ごめんなさい。継続のことも全く理解してないんですが、やっぱりpythonのyieldは継続ではないそうです。
というか、yieldが作るのはジェネレータであって、継続ではない。
Pythonのyieldは継続じゃない
なので、上のコードは、あくまで妄想ということで。。。
暇があったら、また考えます。