많은 파이썬 입문자들이 if
, elif
, else
로 조건문을 작성하는 데는 익숙하지만, 코드가 점점 길어지고 중첩되다 보면 가독성이 떨어지기 시작합니다. 파이썬은 "읽기 쉬운 코드"를 추구하는 언어답게, 조건문도 훨씬 더 우아하고 간결하게 표현할 수 있는 다양한 방법을 제공합니다.
이 글에서는 전통적인 조건문에서 벗어나 보다 Pythonic하게 조건 분기를 처리하는 팁과 예시를 소개합니다.
1. 조건 표현식 (Conditional Expression, aka 삼항 연산자)
status = "성인" if age >= 18 else "미성년자"
- 한 줄로
if/else
표현이 가능 - 단, 중첩 사용은 지양 (가독성 저하)
2. Truthy / Falsy 값 활용하기
if items:
print("리스트에 항목이 있습니다.")
파이썬에서는 다음과 같은 값들이 조건문에서 False
로 평가됩니다:
- 빈 컨테이너 ([]
, {}
, ''
)
- 숫자 0 (0
, 0.0
)
- None
그 외의 값은 모두 True
로 간주되기 때문에 위와 같은 코드가 성립합니다.
초보자의 경우 다음과 같은 코드를 흔히 작성합니다:
if len(items) > 0:
print("리스트에 항목이 있습니다.")
하지만 파이썬에서는 len(items)
가 0이면 False, 1 이상이면 True로 취급되므로, 위 코드를 간단히 if items:
로 줄일 수 있습니다.
이러한 방식은 가독성, 간결성, 파이썬다운 코드 스타일이라는 세 마리 토끼를 모두 잡는 방법입니다. 단, 너무 생략해서 의도가 흐려질 경우에는 주석 등을 곁들이는 것도 좋습니다.
3. Guard Clause로 중첩 줄이기
def process(user):
if not user.is_active:
return "비활성 사용자입니다."
# 이하 로직
if
안에 코드 블록을 중첩시키기보다는 빠르게 return하거나 종료하는 방식- 조건이 충족되지 않으면 먼저 빠져나감 (early return)
4. 딕셔너리로 조건 분기 대체하기
def get_status(code):
return {
200: "OK",
404: "Not Found",
500: "Server Error"
}.get(code, "Unknown")
if-elif
대신dict
매핑으로 가독성 향상.get()
을 사용해 기본값 설정도 가능
5. any()
/ all()
로 복잡한 조건 줄이기
if any([is_admin, is_staff, is_moderator]):
grant_access()
- 여러 조건 중 하나라도 True일 때 →
any()
- 모든 조건이 True여야 할 때 →
all()
6. or
연산자를 활용한 기본값 처리
파이썬의 or
연산자는 왼쪽 값이 False로 평가되면 오른쪽 값을 반환합니다. 이 성질을 활용하면 아래처럼 기본값을 우아하게 지정할 수 있습니다:
username = input("이름을 입력하세요: ") or "이름 없음"
또는 함수 반환값이 비어있을 수 있는 경우에도 fallback 값을 자연스럽게 지정할 수 있습니다:
items = get_items() or ["기본 항목"]
이 방식은 조건문 없이도 짧고 직관적으로 대체값을 지정할 수 있어 매우 유용합니다.
🔍 딕셔너리 접근 시
.get('key', 'default')
는 안전하게 키 존재 여부를 확인하면서 기본값을 반환합니다. 하지만or
는 딕셔너리가 아닌 일반 변수나 함수 반환값 등을 다룰 때 더 간결하게 fallback 처리하는 데 적합합니다.
7. 패턴 매칭 (match-case
) - Python 3.10+
def handle_error(code):
match code:
case 400:
return "Bad Request"
case 404:
return "Not Found"
case _:
return "Unknown Error"
- Python 3.10 이상에서 사용 가능
- switch-case 대체, 구조 분해까지 가능
결론
조건문을 간결하게 정리하는 것만으로도 코드의 가독성과 유지보수성이 크게 향상됩니다. Pythonic한 스타일은 단순히 줄 수를 줄이는 것이 아니라, 의도를 명확히 드러내는 데 목적이 있습니다.
앞으로 조건문을 작성할 때 위 예시들을 조금씩 적용해보면, 자연스럽게 더 우아한 코드를 작성할 수 있을 것입니다.
Simple is better than complex. — from The Zen of Python
Add a New Comment