目次
1. 시작
Python은 그 단순함과 직관적인 구문 덕분에 많은 프로그래머에게 사랑받고 있지만, 다른 언어에 있는「switch-case」구문이 존재하지 않는 것에 놀라는 사람도 있을 것입니다. 따라서 Python에서는「if-elif-else」와「딕셔너리(dictionary)」를 이용해 동일한 처리를 구현해야 합니다. 이 기사에서는 Python에 대한 기존 조건 분기 방법, 딕셔너리를 활용한 대체 수단, 그리고 Python 3.10에 도입된 새로운「match-case」문에 대해 차례대로 설명합니다. 이를 통해 Python에서 효율적인 조건 분기 방법을 마스터하고 실제 코딩에 활용할 수 있을 것입니다.2. Python에 switch 문이 없는 이유
Python에서는 switch-case 문이 채택되지 않은 이유는 그 단순함과 가독성에 있습니다. Python 설계자는 언어를 가능한 한 간결하게 하고, 중복 및 불필요한 구문을 제거하는 것을 목표로 해왔습니다. switch 문은 다른 언어에서는 유용하지만, Python에서는「if-elif-else」 문이나 사전형을 사용하여 동일한 기능을 구현할 수 있기 때문에, switch 문을 추가할 필요가 없다고 합니다. 실제로, Python 공식 문서에도 if-elif-else 문을 사용함으로써 switch 문의 기능을 커버할 수 있다고 합니다. 아래 코드는 C 언어 등의 switch 문 예시입니다.switch (value) {
case 1:
printf("Value is 1");
break;
case 2:
printf("Value is 2");
break;
default:
printf("Other value");
}
Python에서는 이를 아래와 같이 바꿀 수 있습니다.value = 1
if value == 1:
print("Value is 1")
elif value == 2:
print("Value is 2")
else:
print("Other value")
이 방법으로, Python은 switch 문 없이도 조건 분기를 쉽게 구현할 수 있습니다.
3. if-elif-else 사용 예
Python에서 조건 분기를 수행하는 가장 기본적인 방법은 「if-elif-else」 문입니다. 이는 여러 조건에 따라 다른 처리를 실행할 때 매우 효과적입니다. 아래는 그 전형적인 사용 예입니다.value = 100
if value < 50:
print("작은 값입니다")
elif value < 100:
print("중간 정도의 값입니다")
else:
print("큰 값입니다")
이 코드에서는 변수 value
의 값에 따라 다른 메시지가 출력됩니다. if-elif-else 문은 간단하고 직관적인 조건 분기를 가능하게 합니다.조건이 늘어났을 때의 문제점
하지만 if-elif-else 문이 깊어지면 코드가 읽기 어려워질 수 있습니다. 특히 복잡한 조건을 다룰 때는 다음에 소개하는 「딕셔너리형」을 이용한 방법이 유효합니다.4. 딕셔너리형(dictionary)을 사용한 조건 분기
Python의 딕셔너리형을 사용하면, switch-case 문과 유사한 조건 분기를 구현할 수 있습니다. 딕셔너리형은 키와 값의 쌍을 저장하는 데이터 구조로, 여러 조건 분기를 간결하게 표현할 수 있습니다. 다음 예에서는 사용자가 입력한 숫자에 따라 해당 결과를 표시합니다.numbers = {1: "일", 2: "이", 3: "삼"}
value = int(input("1~3의 숫자를 입력해주세요: "))
if value in numbers:
print(f"선택된 숫자: {numbers[value]}")
else:
print("1~3의 숫자를 입력해주세요")
이와 같이 딕셔너리형을 사용하면, 조건이 많아도 코드를 짧고 읽기 쉽게 유지할 수 있습니다.딕셔너리형의 장점
딕셔너리형을 사용한 조건 분기는, 조건이 늘어나도 코드의 가독성이 높고 유지보수가 쉬운 점이 큰 장점입니다. 특히, 값에 대한 처리가 여러 개일 경우, if-elif-else 문보다 효율적입니다.5. Python 3.10의 새로운 기능: match-case 문 도입
Python 3.10부터 도입된 「match-case」 문은 switch-case 문과 매우 유사한 구문으로, 여러 조건을 간결하게 기술할 수 있습니다. 이 새로운 기능은 특히 패턴 매칭에 강점이 있으며, 기존의 if-elif-else 문이나 딕셔너리형을 사용한 방법에 비해 코드의 가독성과 유지보수성을 크게 향상시킵니다.match-case의 기본 구문
아래는 match-case 문에 대한 기본 사용 예시입니다.def check_value(value):
match value:
case 1:
print("1이 선택되었습니다")
case 2:
print("2가 선택되었습니다")
case _:
print("1 또는 2가 아닌 것이 선택되었습니다")
이 코드에서는 변수 value
의 값에 따라 다른 처리가 실행됩니다. case _
는 기본 처리로, 어떤 조건에도 일치하지 않을 경우 실행됩니다.6. match-case의 응용 예시
match-case 문은 보다 복잡한 조건 분기와 패턴 매칭에도 적합합니다. 예를 들어, 리스트의 요소 수나 데이터 타입에 따라 처리를 수행할 수 있습니다.다중 조건에 대응하는 match-case 문
def process_data(data):
match data:
case [x, y]:
print(f"리스트에 2개의 요소가 포함되어 있습니다: {x}, {y}")
case [x, y, z]:
print(f"리스트에 3개의 요소가 포함되어 있습니다: {x}, {y}, {z}")
case _:
print("리스트의 요소 수가 다릅니다")
이 예에서는 리스트의 요소 수에 따라 다른 처리를 수행합니다. match-case 문은 이처럼, 다중 조건과 패턴을 간단하게 기술할 수 있는 것이 특징입니다.
7. if-elif-else, 사전형, match-case 비교
각각의 조건 분기 방식에는 고유한 장점과 단점이 있습니다. 아래에 그 비교표를 보여드립니다.방법 | 장점 | 단점 |
---|---|---|
if-elif-else | 단순하고 직관적 | 조건이 많으면 코드가 복잡해진다 |
사전형(dictionary) | 가독성이 높고, 조건이 많을 때 유용 | 모든 조건이 사전에 들어가는 것은 아니다 |
match-case | 다중 조건 분기와 패턴 매치에 유용 | Python 3.10 이후에서만 사용 가능 |