파이썬 한 줄 if-else, 언제 쓰고 언제 나눠 써야 할까?

파이썬 한 줄 if-else, 언제 쓰고 언제 나눠 써야 할까?

파이썬에서는 두 값 중 하나를 선택하는 짧은 조건을 한 줄로 표현할 수 있습니다. 흔히 삼항 연산자라고 부르지만 정확히는 조건 표현식입니다. 코드를 줄이는 기능이 아니라, 간단한 선택을 읽기 쉽게 표현하는 기능으로 이해하는 것이 좋습니다.

기본 문법

참일_때_값 if 조건 else 거짓일_때_값
age = 22
status = "성인" if age >= 19 else "미성년자"
print(status)  # 성인

일반 if문과 순서가 다릅니다. 먼저 선택할 값을 쓰고 가운데 조건, 마지막에 거짓일 때의 값을 씁니다.

일반 조건문과 비교

if age >= 19:
    status = "성인"
else:
    status = "미성년자"

두 코드는 같은 결과를 만듭니다. 조건과 결과가 짧고 의미가 분명하면 한 줄 표현식이 좋습니다. 분기마다 여러 작업을 해야 한다면 일반 조건문이 맞습니다.

실무 예제: 표시할 이름 정하기

nickname = ""
display_name = nickname.strip() if nickname.strip() else "익명"
print(display_name)  # 익명

같은 메서드를 두 번 호출하지 않으려면 먼저 정리된 값을 변수에 담습니다.

clean_name = nickname.strip()
display_name = clean_name if clean_name else "익명"

중첩하면 왜 읽기 어려울까?

# 가능하지만 한눈에 이해하기 어렵다
grade = "A" if score >= 90 else "B" if score >= 80 else "C"

조건이 늘어나면 일반 if-elif-else로 바꾸십시오. 줄 수는 늘지만 조건의 우선순위와 수정 지점이 분명해집니다.

if score >= 90:
    grade = "A"
elif score >= 80:
    grade = "B"
else:
    grade = "C"

함수 호출을 넣을 때 주의할 점

조건 표현식은 선택된 쪽만 실행합니다. 하지만 결과 안에 데이터 저장, 결제 요청 같은 부수 효과가 큰 함수를 넣으면 흐름을 파악하기 어렵습니다. 값 선택에는 조건 표현식을, 행동 선택에는 일반 조건문을 쓰는 것이 안전합니다.

조건 표현식의 실행 순서 확인하기

두 결과가 모두 계산된다고 오해하기 쉽지만 선택된 표현식만 실행됩니다.

def chosen():
    print("선택됨")
    return 10

def skipped():
    print("건너뜀")
    return 20

result = chosen() if True else skipped()
print(result)
선택됨
10

skipped()의 문구는 출력되지 않습니다. 이 성질을 이용해 기본값을 선택할 수 있지만, 파일 삭제나 네트워크 요청처럼 중요한 행동을 한 줄 표현식에 넣으면 흐름이 숨겨집니다.

직접 판단해 볼 문제

배송비가 5만 원 이상이면 0원, 아니면 3천 원인 코드를 조건 표현식으로 작성해 보십시오. 그다음 회원 등급과 지역까지 조건에 추가해 보세요. 한 줄을 읽는 데 시간이 걸리기 시작하면 if-elif-else로 전환하는 것이 정답입니다.

정리

x if condition else y는 결과가 두 개이고 각각 짧을 때 사용하십시오. 중첩 조건, 여러 문장, 설명이 필요한 판단은 일반 조건문으로 나누는 편이 더 좋은 코드입니다.