2017년 12월 7일 목요일

파이썬에는 switch문이 없다.

파이썬의 조건문에는 C언어의 switch-case문이 없다. 대체할 수 있는 방법은 두 가지이다.
(1) 조건문 if-elif-else문 사용
(2) 딕셔너리(dictionary)를 이용


1. 조건문 if-elif-else문 사용

  (생략)


2. 딕셔너리(dictionary)를 이용

딕셔너리는 키로 색인되는 객체들을 담는 연관 배열 혹은 해시테이블이다. 아래와 같이 값들을 중괄호로 둘러싸서 딕셔너리를 생성한다.

stock = { "name" : "GOOG", "shares" : 100, "price" : 490.10 }

딕셔너리의 요소에 접근하려면 키 색인 연산자를 다음과 같이 사용한다.

name = stock["name"]
value = stock["shares"] * stock["price"]

객체의 추가 및 수정은 다음과 같이 수행한다.

stock["share"] = 75    # 객체 수정
stock["date"] = "June 7, 2007"

딕셔너리의 키는 주로 문자열을 사용하지만, 숫자나 튜플 같은 다른 파이썬 객체도 키로 사용될 수 있다. 다만 리스트나 딕셔너리 같이 그 내용이 바뀔 수 있는 객체는 키로 사용할 수 없다.          출처: <파이썬 완벽 가이드, 인사이트>

딕셔너리의 요소에 접근하는 방법이 switch문과 유사하여 이를 이용하면 간단한 값을 리턴 받는 경우에는 사용이 가능하다.

{1: "First", 2: "Second", 3: "Third"}[number]

위 코드에서 number가 1이면 "First"가 2이면 "Second", 3이면 "Third"가 반환된다.
이렇게 간단한 경우에는 좋지만 각 조건마다 여러 줄의 코드가 수행되어야 하는 경우라면 if-elif-else문이 타당하다. 적어도 난 그렇게 생각한다.

검색해보니 아래와 같이 딕셔너리 객체에 람다식(lambda)을 사용해서 switch의 case문에서 여러 줄의 코드가 수행될 수 있도록 한 경우도 있었다. 머리 좋네.

링크: <https://codingair.wordpress.com/2014/02/11/use-python-to-do-switch-case/>


댓글 없음:

댓글 쓰기

람다 표현식 (Lambda expression)

람다 표현식(Lambda expression)  람다 표현식으로 함수를 정의하고, 이를 변수에 할당하여 변수를 함수처럼 사용한다. (1) 람다 표현식       lambda <매개변수> : 수식      ※ 람다식을 실행하...