Python에서 if...elif...else 조건문을 작성할 때, 특히 중첩 구조가 깊어지는 경우 코드의 성능과 가독성을 높이기 위해 몇 가지 검증된 모범 사례를 따르는 것이 좋습니다. 아래에서 소개하는 방법들을 활용하면 실행 속도를 개선하고 유지보수하기 쉬운 코드를 만들 수 있습니다.
1. 가장 자주 실행되는 경로를 상단에 배치하세요
if...elif...else 문은 위에서부터 순서대로 조건을 평가합니다. 따라서 프로그램 실행 중 가장 빈번하게 선택되는 경로를 조건문의 맨 위쪽에 배치하면, 불필요한 조건 검사를 건너뛸 수 있어 전체적인 성능이 향상됩니다.
2. 사용 빈도순으로 경로를 정렬하세요
첫 번째 원칙과 마찬가지로, 나머지 조건들도 실행 빈도가 높은 순서대로 정렬하는 것이 효과적입니다. 이렇게 하면 대부분의 경우 앞쪽 조건에서 빠르게 일치하여 뒤쪽 조건들을 확인할 필요가 없어집니다.
3. 단락 평가(Short-circuit)를 적극적으로 활용하세요
Python의 논리 연산자는 단락 평가(short-circuit evaluation) 방식으로 동작합니다. 예를 들어 다음과 같은 코드가 있다고 가정해 보겠습니다.
if heavyOperation() and lightOperation():
이 경우 heavyOperation()이 먼저 실행되므로 비용이 큰 연산이 항상 수행됩니다. 두 피연산자의 순서를 바꾸면 성능을 개선할 수 있습니다.
if lightOperation() and heavyOperation():
and 연산은 첫 번째 조건이 거짓(False)이면 두 번째 조건을 평가하지 않고 즉시 넘어갑니다. 따라서 가벼운 연산을 먼저 배치하면, 무거운 연산(heavyOperation)이 불필요하게 실행되는 상황을 방지할 수 있습니다. or 조건에서도 같은 원리가 적용됩니다. 첫 번째 조건이 참(True)이면 뒤의 조건은 평가되지 않으므로, 참이 될 가능성이 높은 가벼운 조건을 앞에 배치하는 것이 좋습니다.
4. 중첩된 구조를 평탄화(Flattening)하세요
깊게 중첩된 if 문은 코드의 가독성을 크게 떨어뜨립니다. 조건을 결합하거나 early return(조기 반환) 패턴을 사용하여 중첩 구조를 최대한 평평하게 만드는 것이 좋습니다. 이는 직접적인 성능 최적화는 아니지만, 코드를 읽고 이해하기 쉽게 만들어 장기적인 유지보수성에 큰 도움이 됩니다.
마무리
정리하면, Python에서 if 문을 효율적으로 사용하려면 실행 빈도 기준 정렬, 단락 평가 활용, 구조 평탄화라는 세 가지 핵심 원칙을 기억하면 됩니다. 이러한 습관은 작은 차이처럼 보일 수 있지만, 규모가 큰 프로젝트에서는 성능과 코드 품질 모두에 실질적인 영향을 미칩니다.