일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Firebase
- 코틀린
- Freesound
- androidx
- Streaming
- 파이썬
- Android
- jetpack compose
- 좋은글필사하기
- 명심보감
- 명언모음
- recyclerview
- bash
- FSM
- kotlin
- 공자명언
- Flutter
- ASMR
- 소울칼리버6
- 넷플릭스
- DART
- 벤자민플랭클린
- Coroutine
- Linux
- 오픈소스
- 공부집중
- 1인개발자
- 장자명언
- 이모지
- 이모지메모
Archives
- Today
- Total
Vintage appMaker의 Tech Blog
python에서 case - 딕셔너리와 함수 본문
파이썬에서는 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는 함수의 주소값이므로 그 값에 ()를 붙여주어야 실행이 가능하다.
'Source code or Tip > python' 카테고리의 다른 글
python에서 간단한 RPC 구현 (Ubuntu <--> Windows) (0) | 2020.12.09 |
---|---|
[github] 파이썬 확장모듈(C++) 만들기 (0) | 2020.12.03 |
스크래치 2.0 HTTP Extension 만들기 (0) | 2020.11.10 |
우분투 python에서 ncurses (0) | 2020.11.09 |
python selenium을 이용한 브라우저 제어 (0) | 2020.07.29 |
Comments