Pythonでswitch

twitterで"なんでPythonにはswitchがないの?"とぼやいたところ、ハカーの皆さんがPythonでswitchの実装を教えてくれた。それが勉強になったので僭越ながらご紹介。

Ian Lewisさん、akisutesamaさんより
breakし忘れてひどいバグを作る子がいるから
ifelifで。

これはごもっとも。っていうかこれしか知らないwww

MiCHiLUさんより
dictを使う{1:lambda x:x, 2:lambda x:x*x, 3:lambda x:x*x*x}.get(4, lambda x:'Infinity')(100)

lambdaを使ってこんなことまでできるとは・・・。hirokinkoさんはjavaでHashMapを使って同じような実装をされているそうです。

id:moriyoshiさんより
switchを作っていただきました。
def switch(name, bases, dict):
  dict.get(bases[0], lambda:0)()
  return type(name, tuple(), dict)

class _('a'):
  __metaclass__ = switch
  def a():
    print 'a'

  def b():
    print 'b'

こちらに保存させてもらいました。これは使いたいコードすぎです。

勉強になります!皆様ありがとうございます^^

コメント

このブログの人気の投稿

Python から Win32 API 経由で印刷する

Disqus のスケール - Django 編

#PySpa アドベント (23 日目)