더북(TheBook)

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이 실행된다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.