概要
人にPython教えると switch-case に関してたまに聞かれるのでメモしておく。
ドキュメント
Python で switch-case がない理由は以下のドキュメントにまとまっている。
端的な理由は、switch-caseは綺麗に書けないし、そんなに必要ない、というのが理由。
ではどう書くか
簡単に書く場合は「if-elif-else」で書くか「辞書」で書くのが多い。
以下、とりあえずサンプル。実際にこういう分岐が必要な場合は、もっとオブジェクト指向的に適切な方法を選択するので、あまりこういう記述が出てくるような気がしない。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import unittest
class TestSwitch(unittest.TestCase):
def test_if(self):
"""if での複数条件分岐"""
key = 'a'
if key == 'a':
print 'a'
self.assertEqual('a', key)
elif key == 'b':
print 'b'
self.assertEqual('b', key)
else:
print 'other'
self.assertNotIn(('a', 'b'), (key,))
def test_dict(self):
"""dict での複数条件分岐"""
key = 'a'
def key_a(key):
print 'a'
self.assertEqual('a', key)
def key_b(key):
print 'b'
self.assertEqual('b', key)
def key_other(key):
print 'other'
self.assertNotIn(('a', 'b'), (key,))
key_dict = {
'a': key_a,
'b': key_b
}
key_dict.get(key, key_other)(key)
if __name__ == '__main__':
unittest.main()
まとめ
どう思うかは好みなので、Pythonはこうだ言うことです。