파이썬 역사 상 switch를 구현하려는 시도는 있었습니다. 다만 switch를 어떤 방식으로 구현하는 게 가장 효과적일지 결정하는 것이 까다롭고, 무엇보다 인기가 없어서 결국 구현되지 못했습니다. 대신 파이썬 공식 문서는 if...elif를 권장합니다.

switch 문을 어떻게 구현할지 결정하기 쉽지 않다 🔗

파이썬을 개발한 귀도 반 로섬 역시 파이썬에는 switch/case(스위치/케이스) 문이 없다는 사실을 잘 알고 있었습니다.

귀도는 PEP 3103에서 switch와 관련된 논의를 시작했습니다. 여기서 귀도는 switch 문을 구현하는 방법에 대한 여러 가지 가능성을 제시했습니다:

각각 장단점이 있기 때문에 어느 한 방식만을 선택하기가 쉽지 않습니다.

저조한 인기 🔗

파이썬은 이미 switch 없이도 잘 작동하고 있습니다. 그런데도 굳이 switch 문을 추가해야 할까요?

파이콘(PyCon) 2007 에서 switch 문에 관한 설문 조사를 진행했으나, 사람들은 이 기능에 큰 관심을 보이지 않았습니다. 이로서 switch/case 문과 관련된 논의는 폐기됩니다.

대안: if…elif 또는 dict 🔗

그렇다면 파이썬에서는 switch/case 대신 무엇을 권장하고 있을까요? 파이썬 공식 문서인 Design and History FAQ를 살펴보면:

  • 일반적인 경우: if...elif
  • 많은 경우 중에서 하나를 택해야 하는 경우: 딕셔너리와 함수를 매핑

    예시:

    def function_1(...):
        ...
    
    functions = {'a': function_1,
                 'b': function_2,
                 'c': self.method_1, ...}
    
    func = functions[value]
    func()
    

    출처: Design and History FAQ