yieldで妄想

衝動的に、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は継続じゃない

なので、上のコードは、あくまで妄想ということで。。。

暇があったら、また考えます。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です


reCaptcha の認証期間が終了しました。ページを再読み込みしてください。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください