더북(TheBook)

이 애플리케이션은 그리 길지 않지만, 더 간략하게 작성할 수 있다. 현재 코드는 the_stack을 전역 변수로 저장하여 pushpop 함수를 직접 선언한 후 main 함수에서 활용하고 있다. 몇 줄은 the_stack에서 직접 메서드를 호출하는 방법으로 전체 코드를 줄일 수 있겠다.

op1 = the_stack.pop()
...
the_stack.append(op1 + op2)      # op1 + op2 저장(push)

코드를 이 방식대로 변경하는 것은 직접 해 보기 바란다. 현재 코드에 에러를 확인하는 부분이 없다는 것도 잊지 말자. 연산 처리를 하기 전에 스택에 최소 2개의 항목이 들어 있는지 확인할 필요가 있다. 에러를 처리하는 것도 숙제로 남겨 놓겠다.

성능 Tip


다음 팁은 여러분의 코드 7줄을 줄여 줄 것이다. 각 연산자를 별도로 테스트하는 대신 eval 함수를 사용하여 파이썬 명령어 문자열을 받아서 실행할 수 있다. 그렇게 되면 이 앱에서 어떤 연산 처리를 하든지 함수 하나만 호출하면 된다.

push(eval(str(op1) + item + str(op2)))

하지만 eval 함수는 잘못 사용하는 경우도 많다. 이 애플리케이션에서는 항목이 +, *, -, / 연산자인 경우에만 사용할 수 있다.

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