Vintage appMaker의 Tech Blog

python에서 case - 딕셔너리와 함수 본문

Source code or Tip/python

python에서 case - 딕셔너리와 함수

VintageappMaker 2020. 12. 30. 11:33

 

파이썬에서는 case문이 없다. 가끔 파이썬을 사용하다 case문이 없음을 기억해내며 당황스러울 때가 있다. 그 때마다

파이썬 딕셔너리와 함수를 이용한 function table

을 사용한다. function table은 c를 많이 사용하는 임베디드 환경이나 OS 레벨의 API를 구현할 경우, case문보다 더 많이 사용하는 기법이다. 함수를 배열로 관리하고 인덱스를 이용해 원하는 함수를 실행시킨다.  

 

def a():
    print ("A")
    
def b():
    print ("B")
    
def c():
    print ("C")
    
def nothing():
    pass
    
def ca(x):
    return { 0: a, 1: b, 2: c}.get(x, nothing)
    
ca (1)()
ca (2)()
ca (3)()

여기서 유의할 점은, 딕셔너리를 정의할 때, value에 함수명을 입력하는 것이다. 그리고 딕세녀러의 get 함수를 이용하여 함수를 가져온다. case 문의 디폴트에 대항하는 부분은 get 함수의 두번째 파라메터로 정의한다. 그리고 딕셔너리에서 가져온 value는 함수의 주소값이므로 그 값에 ()를 붙여주어야 실행이 가능하다. 

 

 

Comments