Python Switch 문

개요

switch 문은 프로그램 흐름을 제어하는 ​​강력하고 편리한 도구입니다. 이를 통해 주어진 변수나 표현식의 값에 따라 여러 코드 분기를 빠르고 쉽게 만들 수 있습니다. 이는 주어진 변수의 값에 따라 다른 논리를 실행해야 할 때 일반적으로 사용되며, 값은 2개 이상(그러나 유한한 수)을 가질 수 있습니다.

이 기사에서는 Python에서 스위치 문을 사용하는 방법을 살펴보고 다른 제어 구조에 비해 장점에 대해 논의합니다. Python을 처음 접하는 개발자이든 숙련된 개발자이든, switch 문은 더 깔끔하고 효율적인 코드를 작성하는 데 도움이 될 수 있습니다.

v3.10 이전

Python 스위치 문을 언어에서 기본적으로 사용할 수 있기 전에 프로그래머는 동일한 기능을 달성하기 위해 다른 제어 구조를 사용해야 했습니다. 일반적인 접근 방식 중 하나는 일련의 if-else 문을 사용하는 것인데, 각 코드 분기는 테스트되는 변수의 다른 값과 연결됩니다.

예를 들어 다음 코드를 고려하십시오.

value = "foo"

if value == "foo":
    print("foo was selected")
elif value == "bar":
    print("bar was selected")
else:
    print("Nothing valid was selected")

이 코드에서는 if-else 문을 사용하여 변수 값에 따라 실행할 코드 분기를 결정합니다. value. 면 value "foo"와 같으면 코드의 첫 번째 분기가 실행됩니다. 만약에 value 가 "bar"와 같으면 코드의 두 번째 분기가 실행됩니다. 그렇지 않으면 else 블록이 실행됩니다.

이 접근 방식은 효과가 있지만 변수에 사용할 수 있는 값의 수가 증가하면 다루기 어려워질 수 있습니다. 게다가 코드를 읽고 이해하기 어렵게 만들 수도 있습니다.

Python에서 스위치와 같은 문을 만드는 데 사용할 수 있는 또 다른 접근 방식은 사전을 사용하는 것입니다. 이 접근 방식에서 사전의 키는 테스트 중인 변수의 가능한 값이고 값은 해당 코드 분기입니다.

예를 들어 다음 코드를 고려하십시오.

value = "foo"

switch = {
    "foo": lambda: print("foo was selected"),
    "bar": lambda: print("bar was selected"),
    "default": lambda: print("Nothing valid was selected"),
}

switch.get(value, "default")()

이 코드에서는 다음과 같은 사전을 정의했습니다. switch, 변수의 가능한 값을 나타내는 키 포함 value. 각 키에 대해 해당 코드 분기를 포함하는 람다 함수를 값으로 할당했습니다. 적절한 코드 분기를 실행하기 위해 다음을 사용합니다. get() 주어진 키가 사전에 존재하지 않는 경우 사용할 기본값을 지정할 수 있는 사전의 메소드입니다.

이 접근 방식은 if-else 문을 사용하는 것보다 더 유연하고 간결하지만 여전히 읽고 이해하기 어려울 수 있습니다. 특히 각 분기의 코드가 복잡한 경우 더욱 그렇습니다. 또한 일부 프로그래머에게는 혼란스러울 수 있는 람다 함수를 사용해야 합니다. 이 문서의 다른 방법을 사용할 수 없는 어떤 이유로든 이 방법을 사용하지 않는 것이 좋습니다.

Python v3.10에 Python 스위치 문이 도입됨에 따라 프로그래머는 이제 주어진 변수나 표현식의 값을 기반으로 프로그램의 흐름을 제어하는 ​​보다 편리하고 직관적인 방법을 갖게 되었습니다. 다음 섹션에서는 Python에서 실제 스위치 문을 사용하는 방법을 살펴보겠습니다.

XNUMXD덴탈의 match/case 성명(v3.10 이후)

Python v3.10 이후에는 스위치 문이 다음을 사용하여 처리됩니다. match 예어. 이 키워드는 일련의 패턴에 대해 지정된 변수 또는 표현식의 값을 테스트할 수 있는 패턴 일치 표현식을 만드는 데 사용됩니다. 일치하는 항목이 발견되면 해당 코드 분기가 실행됩니다.

예를 들어 다음 코드를 고려하십시오.

value = "foo"

match value:
    case "foo":
        print("foo was selected")
    case "bar":
        print("bar was selected")
    case _:
        print("Nothing valid was selected")

모범 사례, 업계에서 인정하는 표준 및 포함된 치트 시트가 포함된 Git 학습에 대한 실습 가이드를 확인하십시오. 인터넷 검색 Git 명령을 중지하고 실제로 배움 이것!

이 코드에서는 match 변수 값을 테스트하는 패턴 일치 표현식을 생성하는 키워드 value 일련의 패턴에 반대합니다. 만약에 value "foo"와 같으면 코드의 첫 번째 분기가 실행됩니다. 만약에 value 가 "bar"와 같으면 코드의 두 번째 분기가 실행됩니다. 그렇지 않으면 else 블록의 코드가 실행됩니다.

실패로 끝나다

Python의 스위치 문과 다른 언어의 기존 스위치 문 사이의 주요 차이점 중 하나는 Python의 match 문은 fallthrough를 지원하지 않습니다. 즉, 일치하는 항목이 발견되고 해당 코드 분기가 실행되면 match 표현식이 끝나고 다른 코드가 없습니다. match 명령문이 실행됩니다. 다른 언어에서는 일반적으로 다음을 사용하여 이를 수행합니다. break 여기서는 필요하지 않거나 지원되지 않는 키워드입니다.

기존의 switch 문에서 fall-through와 동일한 동작을 수행하려면 다음을 사용할 수 있습니다. | 여러 사례를 일치시키는 연산자입니다. 이 연산자를 사용하면 단일에 여러 패턴을 지정할 수 있습니다. case, 패턴 중 하나를 일치시켜 해당 분기의 실행을 트리거할 수 있습니다.

예를 들어 다음 코드를 고려하십시오.

value = "y"

match value:
    case "yes" | "y":
        print("The user confirmed")
    case _:
        print("The user denied")

여기서, 값이 value "예"와 같습니다 or "y", 코드의 첫 번째 분기가 실행됩니다. 이는 기존 switch 문의 fall-through 동작과 동일합니다.

기본값

위의 예에서 알 수 있듯이 "기본" 사례는 밑줄(_). 이는 "와일드카드"로 간주되며 모든 값과 일치합니다. 이전 사례 중 하나가 값과 일치하면 기본 코드 분기를 건너뛰고 실행되지 않습니다.

결론

보시다시피 Python match(일명 "스위치") 문은 프로그램 흐름을 제어하는 ​​강력하고 편리한 방법을 제공합니다. Python을 처음 접하는 개발자이든 숙련된 개발자이든, switch 문은 더 깔끔하고 효율적인 코드를 작성하는 데 도움이 될 수 있습니다.

타임 스탬프 :

더보기 스택카부스