[python] switchもどき

2015年7月29日水曜日

python

ipythonにはswitch, case文はありません。
breakの書き忘れで変なバグを生まないように…だとか。
でも、if, elifを重ねるのって嫌ですよね。
特に同一変数の評価をif, elifで書くとなんだか非効率な気もする…

そこで、こんな書き方。

n = 0
x = 100
val = {
 0: lambda x: x + 1,
 1: lambda x: x + 2,
 2: lambda x: x + 3
}.get(n)(x)
print val # 101

ちょっとわかりにくい気もしますが、
イディオムとして覚えてしまえば、switch, caseとさほど変わらないです♪