파이썬은 다른 일부 프로그래밍 언어와 달리 3.10 버전 이전까지 传统的 switch case 문을 포함하지 않았습니다. 이 튜토리얼에서는 파이썬의 switch case 等価 구문이 어떻게 작동하는지 以及 파이썬의 구조적 패턴 매칭 기능을 사용하여 어떻게 구현할 수 있는지 탐구할 것입니다.
전통적인 Switch Case 문 이해
파이썬 3.10 이전에는 다른 일부 프로그래밍 언어와 달리 传统的 switch case 기능을 지원하지 않았습니다. 따라서 개발자들은 여러가지 if-elif-else 문을 사용하거나 딕셔너리를 사용하여 switch case 기능을 simulation 할 수 밖에 없었습니다. 다음은 if-elif-else를 사용한 기본적인 예제입니다.
day = input("Enter the day of the week: ").capitalize() if day == "Saturday" or day == "Sunday": print(f"{day} is a weekend.") elif day in ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"]: print(f"{day} is a weekday.") else: print("That's not a valid day of the week.")
Saturday is a weekend.
Python 3.10에서의 Match and Case
Python 3.10 시, match 구문과 case 키워드가 도입되었습니다. 다른 언어의 传统的 switch case 문과 유사한 더 elegant한 솔루션을 제공합니다.
기본 구문 이해
주요 일주일의 하루를 주말 또는 평일 카테고리로 구분하고 특정 날짜를 구분하고자 하는 scenarios를 고려합니다. match 구문을 사용하는 것을 보죠.
day = input("Enter the day of the week: ").capitalize() match day: case "Saturday" | "Sunday": print(f"{day} is a weekend.") case "Monday" | "Tuesday" | "Wednesday" | "Thursday" | "Friday": print(f"{day} is a weekday.") case _: print("That's not a valid day of the week.")
Monday is a weekday.
- 사용자 Input과
capitalize()
메서드: 우선 사용자가 주요 일주일의 하루를 입력하고capitalize()
메서드를 사용하여 적절한 형식을 만듭니다(첫 문자가 대문자로, 나머지 문자가 소문자로). match
구문 사용: 그 다음 day 변수를 평가하기 위해match
를 사용합니다.- 패턴 매칭 이용하여
case
:- 첫 번째
case
는 입력이 “Saturday” 또는 “Sunday”인지 여부를 检查합니다. symbols “|” 또는 位运算 OR 运算符를 사용하여 다양한 패턴 중 하나를 일치시킵니다. 입력이 이 중 하나면 그 날이 주말이라고 출력합니다. - 두 번째 case는 모든 평일을 가져다 각각 检查하여 입력이 어느 하루의 일이라고 하면 그 날이 평일이라고 출력합니다.
- 첫 번째
- allback Case (
_
): 마지막 case는 기본적인 (`else` statement) 역할을 합니다. 알려진 날짜와 일치하지 않는 모든 입력을 捕获하고 부적절한 입력이라고 지시합니다. - break 명령어 사용하지 않음: 각 case 다음에
break
를 사용할 필요가 없다는 것을 주의하시오. Python은 成功的한 일치 이후에 자동으로 매치 문장을 나가게 합니다.
match-case 문법은 if-elif-else 문장의 대신에 더 읽을 수 있고 간결하게 작성할 수 있습니다.
Python에서 Match and Case의 고급 사용 사례
데이터 과학 응용에서 사용하는 것을 시도합니다.
파이썬의 match-case 문은 데이터 과학의 데이터 전처리 작업에서 매우 유용하게 사용될 수 있습니다. 전처리는 종ufigemente 데이터를 특정 기준에 따라 여러 그룹으로 분류하는 것을 포함합니다.
예를 들어, 동물의 데이터 세트에서는,哺乳動物, 鳥類, 爬行類 등의 클래스에 따라 분류하고 싶을 수 있습니다. 다음은 간단한 예입니다:
animal = "Eagle" match animal: case "Eagle" | "Parrot": print("Bird") case "Lion" | "Tiger": print("Mammal") case "Python" | "Crocodile": print("Reptile") case _: print("Unknown Class")
Bird
이 방법은 복잡한 if-else 논리를 간소화하고, 특히 대량의 데이터 세트에서 여러 카테고리를 처리할 때 코드를 더 읽기 쉽고 유지 관리하기 쉽게 만듭니다.
機械学習 시나리오
機械学習에서는 다양한 유형의 데이터 입력 처리가 중요합니다. match-case 구조는 특징 추출이나 모델 추론에 사용될 수 있습니다. 예를 들어, 날씨 조건을 예측하는機械学習 모델에서는, match-case를 사용하여 온도 범위를 ‘Cold’, ‘Warm’, ‘Hot’으로 분류하여 모델의 입력 특징으로 사용할 수 있습니다.
파이썬 Switch Case의 공통적인 실수와 最佳實踐
디버깅 팁
파이썬에서 match-case를 사용할 때의 일반적인 실수는 기본 케이스에 대한 밑줄(_
)을 포함시키지 않는 것입니다. 이는 전통적인 if-else 문의 ‘else’와 유사합니다. 이는 specific cases가 일치하지 않으면 예기치 않은 동작을 유발할 수 있습니다. 예기치 않은 값들을 처리하기 위해 항상 기본 케이스를 포함하십시오.
성능 고려사항
대비 능력이 있는 match-case 문은 강력한 도구입니다만, 그것이 Python 코드의 성능, 특히 대규모 응용 프로그램에서의 영향은 고려되어야 합니다. 많은 경우의 수나 복잡한 패턴 일치를 위한 시나리오에서 성능이潛在적으로 영향을 받을 수 있습니다. 실제 사용 환경에서 코드의 성능을 프로파일링하고 테스트하는 것은 잠재적인 성능 문제를 이해하고 완화하는 데 중요합니다.
Python Match-Case와 전통적 Switch-Case
비교 분석
Python의 match-case는 Java나 C++와 같은 언어에서 발견되는 전통적인 switch-case 문과 크게 다릅니다. 예를 들어 Java에서 switch 문은 기하급수적인 값(예를 들어 정수와 열거형 유형)과의 일치에만 제한적입니다만, Python의 match-case는 더 유연한 패턴 일치 기능을 제공하며, 시퀀스나 클래스 인스턴스와 같은 복잡한 데이터 유형과 일치할 수 있습니다. 이는 Python의 구현이 더욱 강력하게 만들지만, 패턴 일치 개념을 더 깊이 이해할 필요가 있습니다.
이전 가이드
C++나 Java와 같은 언어에서 전통적인 switch-case 문을熟悉的 프로그래머는 Python의 match-case로의 전환은 단순한 값 일치에서 패턴 일치로의 생각的转变이 필요합니다.
Python의 match-case가 단지 switch-case가 아니라, 복잡한 구조에서 데이터 유형을 해체하고 정보를 추출하는 유용한 도구임을 이해하는 것이 중요합니다. 다양한 데이터 유형과 패턴을 연습하는 것이 그 사용을 마스터하는 것의 핵심입니다.
결론
Python 3.10 버전에서 match and case statements의 도입은 다른 언어의 switch case statements를 熟悉하는 개발자들의 기대되는 기능을 제공합니다. 여러 조건을 处理하는 干净简洁한 방법을 제공하여 코드의 읽기가 좋고 유지 관리가 쉽습니다.
更に Python 함수에 대해서는 我们的 전체 자료에서 더 많이 보실 수 있으며, 이와 다른 개념을 我们的 중급 Python 과정에서 探rip니다.
Source:
https://www.datacamp.com/tutorial/python-switch-case