4.2.15 함수 테이블(리스트, 딕셔너리)로 switch 문을 모방한다
다음 기법은 잠재적으로 많은 코드를 줄여 줄 수 있기 때문에 중요하다.
15.12절에서 사용자가 입력한 숫자에 따라 서로 다른 함수를 호출하는 코드를 제공한다. 이 로직을 구현하는 명확한 방법은 여러 개의 if/elif 문을 사용하는 것이다. 파이썬은 switch 문이 없기 때문이다.
if n == 1:
do_plot(stockdf)
elif n == 2:
do_highlow_plot(stockdf)
elif n == 3:
do_volume_subplot(stockdf)
elif n == 4:
do_movingavg_plot(stockdf)
이런 코드는 너무 장황하다. 동작은 하겠지만, 이렇게까지 길 필요는 없다. 파이썬 함수는 객체이며, 다른 객체와 같이 리스트의 항목으로 집어넣을 수 있다. 그러면 함수 참조를 리스트에서 추출하여 호출할 수 있다.
fn = [do_plot, do_highlow_plot, do_volume_subplot, do_movingavg_plot][n-1]
fn(stockdf) # 함수 호출
예를 들어 n-1이 0이면 리스트 첫 항목인 do_plot이 실행된다.