Python & AI Tutorials Logo
Python 프로그래밍

10. 조건부 표현식 (if-else 표현식) 사용하기

8장에서는 if 문을 사용해 프로그램에서 의사결정을 하는 방법을 배웠습니다. 이러한 문은 조건에 따라 서로 다른 코드 블록을 실행할 수 있게 해줍니다. 하지만 때로는 두 코드 블록이 아니라 두 중에서 선택해야 할 때가 있습니다. Python은 이런 흔한 상황을 위한 특별한 문법을 제공합니다. 바로 조건부 표현식 (conditional expression) 입니다.

조건부 표현식(다른 언어에서는 삼항 표현식 (ternary expression) 또는 삼항 연산자 (ternary operator) 라고도 부릅니다)은 조건에 따라 한 값 또는 다른 값을 선택하기만 하면 될 때, 의사결정 코드를 간결하게 작성할 수 있게 해줍니다. 특히 대입(assignments)과 더 큰 표현식(expressions)을 구성할 때 유용합니다.

10.1) 조건부 표현식이란 무엇인가

조건부 표현식 (conditional expression) 은 조건에 따라 두 값 중 하나로 평가되는 단일 표현식입니다. 어떤 코드 블록이 실행될지를 제어하는 if 문과 달리, 조건부 표현식은 즉시 사용할 수 있는 값을 만들어 냅니다.

흔한 시나리오를 하나 살펴봅시다. 나이로 학생을 분류하는 프로그램을 작성한다고 가정해 보겠습니다.

python
# if 문 사용(이미 알고 있는 방식)
age = 16
if age >= 18:
    category = "adult"
else:
    category = "minor"
print(f"Category: {category}")  # Output: Category: minor

이 코드는 완벽하게 동작하지만, 사실상 우리는 두 문자열 값 중 하나를 선택하고 있을 뿐입니다. 이런 간단한 결정에 비해 구조가 다소 장황합니다. 다음은 같은 로직을 조건부 표현식으로 작성한 것입니다.

python
# 조건부 표현식 사용
age = 16
category = "adult" if age >= 18 else "minor"
print(f"Category: {category}")  # Output: Category: minor

두 버전은 동일한 결과를 내지만, 조건부 표현식이 더 간결합니다. 조건에 따라 두 값 중 하나를 category에 직접 대입합니다.

근본적인 차이 이해하기

핵심 차이는 조건부 표현식이 문(statement)이 아니라 표현식 (expression) 이라는 점입니다.

  • 표현식 (expression) 은 값으로 평가되는 것입니다. 값이 기대되는 어디에서든 사용할 수 있습니다: 대입, 함수 인자, 다른 표현식 내부 등.
  • 문 (statement) 은 어떤 동작을 수행하는 완전한 지시문이지만 값을 만들어 내지는 않습니다.
python
# 이것은 표현식입니다 - 값을 만들어 냅니다
result = 10 if True else 20
 
# 이것은 문입니다 - 동작을 수행하지만 그 자체가 값은 아닙니다
if True:
    result = 10
else:
    result = 20

조건부 표현식은 값을 만들어 내기 때문에 특정 상황에서 더 유연합니다. 하지만 그렇다고 항상 더 낫다는 뜻은 아닙니다. 이 장의 뒤에서 각각을 언제 사용해야 하는지 살펴보겠습니다.

10.2) if–else 표현식의 문법

조건부 표현식의 문법은 다음 패턴을 따릅니다.

value_if_true if condition else value_if_false

각 구성 요소를 나눠 보겠습니다.

  1. value_if_true: 조건이 True일 때 평가되어 반환되는 표현식
  2. if: 조건을 도입하는 키워드
  3. condition: 어떤 값이 반환될지를 결정하는 불리언 표현식
  4. else: 대안 값을 도입하는 키워드
  5. value_if_false: 조건이 False일 때 평가되어 반환되는 표현식

다른 프로그래밍 언어에 익숙하다면 순서가 다소 낯설게 느껴질 수 있습니다. Python에서는 "참"일 때의 값이 먼저 오고, 그 다음에 조건, 그리고 "거짓"일 때의 값이 옵니다. 이 순서는 자연스러운 영어처럼 읽힙니다. “조건이 참이면 X를 주고, 그렇지 않으면 Y를 줘.”

아니오

시작: 조건 평가

조건이 True인가?

value_if_true 평가 및 반환

value_if_false 평가 및 반환

결과 사용 가능

서로 다른 타입의 값을 사용하는 여러 예제를 살펴봅시다.

python
# 예제 1: 숫자 중 선택
temperature = 25
comfort_level = "warm" if temperature > 20 else "cool"
print(comfort_level)  # Output: warm
 
# 예제 2: 계산 결과 중 선택
score = 85
bonus = 10 if score >= 90 else 5
print(f"Bonus points: {bonus}")  # Output: Bonus points: 5
 
# 예제 3: 불리언 값 중 선택
has_permission = True
access = "granted" if has_permission else "denied"
print(f"Access: {access}")  # Output: Access: granted
 
# 예제 4: 조건은 어떤 불리언 표현식이든 될 수 있습니다
username = "admin"
role = "administrator" if username == "admin" else "regular user"
print(f"Role: {role}")  # Output: Role: administrator

중요한 문법 참고 사항

조건부 표현식에서는 else 부분이 필수입니다. if 문에서 else가 선택 사항인 것과 달리, 여기서는 두 대안을 모두 제공해야 합니다.

python
# 이것은 유효하지 않습니다 - else가 빠져 있습니다
# result = "yes" if True  # SyntaxError
 
# 이것은 유효합니다 - 양쪽 분기를 모두 제공합니다
result = "yes" if True else "no"

이 요구사항은 표현식은 항상 값을 만들어 내야 하므로 타당합니다. 조건이 False인데 else 절이 없다면, 표현식은 어떤 값을 만들어야 할까요? Python은 두 가능성을 모두 명시하도록 요구합니다.

10.3) 조건부 표현식이 평가되는 방식

Python이 조건부 표현식을 어떻게 평가하는지 이해하면 올바른 코드를 작성하고 프로그램이 무엇을 할지 예측하는 데 도움이 됩니다. 평가는 특정하고 예측 가능한 순서를 따릅니다.

평가 과정

Python은 조건부 표현식을 다음 순서로 평가합니다.

  1. 조건 평가 (if 뒤에 오는 불리언 표현식)
  2. 결과에 따라:
    • 조건이 True이면 value_if_true를 평가하고 반환합니다.
    • 조건이 False이면 value_if_false를 평가하고 반환합니다.

중요한 점은 Python이 두 값 표현식을 모두 평가하지 않고, 둘 중 하나만 평가한다는 것입니다. 이를 단락 평가 (short-circuit evaluation) 라고 하며, 9장에서 배운 andor 연산자의 동작 방식과 유사합니다.

python
# 관련 있는 분기만 평가됩니다
x = 10
result = x * 2 if x > 5 else x / 2
# x > 5가 True이므로 Python은 x * 2(20)을 평가하고
# x / 2는 전혀 평가하지 않습니다
print(result)  # Output: 20

단락 평가가 중요한 이유

단락 평가는 오류를 방지하고 효율을 높일 수 있습니다.

python
# 예제 1: 0으로 나누기 피하기
denominator = 0
result = "undefined" if denominator == 0 else 100 / denominator
print(result)  # Output: undefined
# 100 / denominator 나눗셈은 시도조차 하지 않습니다. 왜냐하면
# 조건이 True이기 때문에 ZeroDivisionError를 피할 수 있습니다
python
# 예제 2: None에 대한 연산 피하기
data = None
length = 0 if data is None else len(data)
print(length)  # Output: 0
# data가 None이므로 len(data)는 호출되지 않아
# TypeError를 피할 수 있습니다

조건부 표현식에서의 참/거짓 판정

8장의 if 문과 마찬가지로, 조건부 표현식의 조건은 Python의 참/거짓 판정(truthiness) 규칙을 사용합니다. 어떤 값이든 조건으로 사용할 수 있습니다.

python
# 빈 문자열은 falsy입니다
name = ""
greeting = f"Hello, {name}" if name else "Hello, guest"
print(greeting)  # Output: Hello, guest
 
# 비어 있지 않은 문자열은 truthy입니다
name = "Alice"
greeting = f"Hello, {name}" if name else "Hello, guest"
print(greeting)  # Output: Hello, Alice
 
# 0은 falsy이고, 0이 아닌 값은 truthy입니다
items = 0
message = "You have items" if items else "Your cart is empty"
print(message)  # Output: Your cart is empty
 
items = 3
message = "You have items" if items else "Your cart is empty"
print(message)  # Output: You have items

중첩 평가

조건부 표현식의 값 부분은 다른 조건부 표현식을 포함해 표현식일 수 있습니다. Python은 안쪽에서 바깥쪽으로 평가합니다.

python
# value_if_true 자체가 계산입니다
age = 25
price = age * 2 if age < 18 else age * 3
print(price)  # Output: 75
# 단계: age < 18 → False → age * 3 평가 → 75
 
# 조건이 복잡한 표현식입니다
score = 85
grade = 90
status = "excellent" if score >= 80 and grade >= 85 else "good"
print(status)  # Output: excellent
# 단계: score >= 80 → True, grade >= 85 → True
#        True and True → True → "excellent" 반환

10.4) 대입에서 조건부 표현식 사용하기

조건부 표현식의 가장 흔한 용도 중 하나는 대입에서, 조건에 따라 변수에 두 값 중 하나를 설정하는 것입니다. 이 패턴은 실제 코드에서 자주 등장합니다.

단순한 대입 패턴

조건부 표현식이 대입을 더 깔끔하게 만드는 실용적인 예제를 살펴봅시다.

python
# 예제 1: 멤버십에 따라 할인율 설정
is_member = True
discount = 0.15 if is_member else 0.05
print(f"Discount: {discount * 100}%")  # Output: Discount: 15.0%
 
# 예제 2: 배송비 결정
order_total = 45.00
shipping = 0 if order_total >= 50 else 5.99
print(f"Shipping: ${shipping:.2f}")  # Output: Shipping: $5.99
 
# 예제 3: 기본값 설정
user_input = ""  # 빈 입력을 시뮬레이션
page_size = int(user_input) if user_input else 10
print(f"Items per page: {page_size}")  # Output: Items per page: 10

if 문과 비교하기

차이를 느껴보기 위해 같은 대입을 if 문으로 작성한 것을 봅시다.

python
# if 문 사용(더 장황함)
is_member = True
if is_member:
    discount = 0.15
else:
    discount = 0.05
 
# 조건부 표현식 사용(더 간결함)
is_member = True
discount = 0.15 if is_member else 0.05

두 방식 모두 올바르게 동작하지만, 단지 두 값 중 하나를 고르는 경우 조건부 표현식이 더 간결합니다. if 문 버전은 네 줄이 필요하고 변수 이름 discount를 두 번 반복하는 반면, 조건부 표현식은 한 줄로 같은 일을 합니다.

동일한 로직으로 여러 번 대입하기

같은 조건에 따라 여러 대입을 해야 할 때는 선택지가 있습니다.

python
# 접근 1: 여러 조건부 표현식
is_premium = True
price = 99.99 if is_premium else 149.99
features = "all" if is_premium else "basic"
support = "priority" if is_premium else "standard"
 
# 접근 2: 여러 대입을 위한 하나의 if 문
is_premium = True
if is_premium:
    price = 99.99
    features = "all"
    support = "priority"
else:
    price = 149.99
    features = "basic"
    support = "standard"

이 경우 if 문 접근(접근 2)이 관련된 대입을 한데 묶고 관계를 분명하게 보여주기 때문에 종종 더 읽기 쉽습니다. 조건부 표현식 접근(접근 1)도 동작하지만 조건을 세 번 반복하므로, 조건을 변경해야 할 때 유지보수가 더 어려울 수 있습니다.

10.5) 더 큰 표현식 안에서 조건부 표현식 사용하기

조건부 표현식은 값을 만들어 내기 때문에 더 큰 표현식 안에 포함시킬 수 있습니다. 이는 강력하고 간결한 코드를 가능하게 하지만, 가독성을 유지하기 위해 주의가 필요합니다.

산술 연산에서의 조건부 표현식

조건부 표현식을 산술 연산의 피연산자로 사용할 수 있습니다.

python
# 조건부 덧셈
base_score = 80
bonus_eligible = True
final_score = base_score + (10 if bonus_eligible else 0)
print(f"Final score: {final_score}")  # Output: Final score: 90

문자열 포매팅에서의 조건부 표현식

조건부 표현식은 f-string 및 다른 문자열 연산과 자연스럽게 잘 어울립니다.

python
# 예제 1: 메시지에서 단수/복수 처리
item_count = 1
message = f"You have {item_count} {'item' if item_count == 1 else 'items'}"
print(message)  # Output: You have 1 item
 
item_count = 3
message = f"You have {item_count} {'item' if item_count == 1 else 'items'}"
print(message)  # Output: You have 3 items
 
# 예제 2: 시간에 따른 조건부 인사말
hour = 14
greeting = f"Good {'morning' if hour < 12 else 'afternoon'}, user!"
print(greeting)  # Output: Good afternoon, user!

중첩 조건부 표현식

여러 조건을 처리하기 위해 조건부 표현식을 중첩할 수 있지만, 이는 최소화하는 것이 좋습니다.

python
# 예제 1: 3단계 분류
score = 85
grade = "A" if score >= 90 else ("B" if score >= 80 else "C")
print(f"Grade: {grade}")  # Output: Grade: B
 
# 이 과정을 추적해 봅시다:
# score >= 90? 아니오(85 < 90)
# 그러면 else 부분 평가: ("B" if score >= 80 else "C")
# score >= 80? 예(85 >= 80)
# "B" 반환
 
# 예제 2: 온도 분류
temp = 15
category = "hot" if temp > 25 else ("warm" if temp > 15 else "cold")
print(f"Category: {category}")  # Output: Category: cold
 
# 예제 3: 여러 구간의 연령 기반 가격 책정
age = 65
price = 0 if age < 5 else (8 if age < 18 else (12 if age < 65 else 8))
print(f"Ticket price: ${price}")  # Output: Ticket price: $8

중첩에 대한 중요한 참고 사항: 중첩 조건부 표현식은 가능하지만, 빠르게 읽기 어려워질 수 있습니다. 위의 세 번째 예제는 기술적으로는 맞지만 이해하기 어렵습니다. 더 나은 대안은 10.7절에서 논의하겠습니다.

비교에서의 조건부 표현식

비교 연산 안에서 조건부 표현식을 사용할 수 있습니다.

python
# 예제 1: 조건부 값과 비교
base_value = 10
threshold = 15
is_large = True
result = base_value > (threshold if is_large else 5)
print(result)  # Output: False
# 평가: base_value > 15 → 10 > 15 → False
 
# 예제 2: 조건부 동등성 검사
user_role = "admin"
required_role = "admin" if True else "user"
has_access = user_role == required_role
print(has_access)  # Output: True

10.6) 조건부 표현식 vs if 문(표현식 vs 문)

조건부 표현식과 if 문 중 무엇을 사용할지 이해하는 것은 명확하고 유지보수 가능한 코드를 작성하는 데 매우 중요합니다. 이 구분은 Python에서 표현식과 문의 근본적인 차이로 귀결됩니다.

표현식 vs 문: 핵심 차이

이 용어들을 정확하게 정리해 봅시다.

  • 표현식 (expression) 은 값, 변수, 연산자, 함수 호출이 조합된 것으로, Python이 평가하여 하나의 값을 만들어 냅니다. 예: 2 + 3, "hello".upper(), x if x > 0 else 0

  • 문 (statement) 은 어떤 동작을 수행하는 완전한 지시문입니다. 문은 값을 만들어 내지 않습니다. 즉, “무언가를 합니다.” 예: if x > 0: print("positive"), x = 5, for i in range(10): print(i)

python
# 이것은 표현식입니다 - 값(7)을 만들어 냅니다
result = 3 + 4
 
# 이것은 문입니다 - 동작을 수행합니다(출력)
print("Hello")
 
# 조건부 표현식은 표현식입니다
value = "yes" if True else "no"  # "yes"를 만들어 냅니다
 
# if 문은 문입니다
if True:
    value = "yes"
else:
    value = "no"
# 대입을 수행하지만 if 자체는 값을 만들어 내지 않습니다

조건부 표현식을 사용해야 할 때

조건부 표현식은 다음과 같은 경우에 이상적입니다.

1. 대입에서 두 값 중 하나를 고르는 경우:

python
# 조건부 표현식의 좋은 사용
age = 16
status = "adult" if age >= 18 else "minor"
 
# if 문으로 쓰면 덜 간결함
age = 16
if age >= 18:
    status = "adult"
else:
    status = "minor"

2. 더 큰 표현식 안에서 인라인 값이 필요한 경우:

python
# 좋은 사용 - f-string 안에서 값이 필요함
items = 1
print(f"You have {items} {'item' if items == 1 else 'items'}")
# Output: You have 1 item
 
# if 문으로는 어색함 - 사전 대입이 필요함
items = 1
if items == 1:
    word = "item"
else:
    word = "items"
print(f"You have {items} {word}")

3. 로직이 단순하고 표현식이 읽기 쉬운 경우:

python
# 좋은 사용 - 단순하고 명확한 로직
discount = 0.15 if is_member else 0.05
max_value = a if a > b else b
sign = "positive" if x > 0 else "non-positive"

if 문을 사용해야 할 때

다음과 같은 경우에는 if 문을 사용하세요.

1. 각 분기에서 여러 문을 실행해야 하는 경우:

python
# if 문 사용 - 분기마다 여러 동작
if score >= 90:
    grade = "A"
    message = "Excellent work!"
    bonus_points = 10
else:
    grade = "B"
    message = "Good job!"
    bonus_points = 5
 
# 조건부 표현식으로는 어색합니다:
# grade = "A" if score >= 90 else "B"
# message = "Excellent work!" if score >= 90 else "Good job!"
# bonus_points = 10 if score >= 90 else 5
# (조건을 불필요하게 반복합니다)

2. 두 분기보다 많을 때(elif):

python
# if 문 사용 - 여러 분기
if score >= 90:
    grade = "A"
elif score >= 80:
    grade = "B"
elif score >= 70:
    grade = "C"
else:
    grade = "F"
 
# 중첩 조건부 표현식은 읽기 어려워집니다:
# grade = "A" if score >= 90 else ("B" if score >= 80 else ("C" if score >= 70 else "F"))

3. 한 분기에서 아무 것도 하지 않아야 하는 경우:

python
# if 문 사용 - else 분기는 아무 것도 하지 않음
if error_occurred:
    print("An error occurred")
    log_error(error_message)
# else가 필요 없음
 
# 조건부 표현식은 두 분기가 모두 필요합니다:
# result = handle_error() if error_occurred else None  # 어색함

나란히 비교하기

같은 로직을 두 방식으로 구현한 것을 봅시다.

python
# 시나리오: 배송비 설정
 
# 버전 1: 조건부 표현식(단순한 값 선택에 적합)
order_total = 45.00
shipping = 0 if order_total >= 50 else 5.99
 
# 버전 2: if 문(더 장황하지만 경우에 따라 더 명확함)
order_total = 45.00
if order_total >= 50:
    shipping = 0
else:
    shipping = 5.99
 
# 둘 다 같은 결과를 냅니다
print(f"Shipping: ${shipping:.2f}")  # Output: Shipping: $5.99

이 간단한 경우 조건부 표현식이 더 간결하고 똑같이 명확합니다. 하지만 더 복잡한 시나리오를 생각해 봅시다.

python
# 시나리오: 여러 단계로 주문 처리
 
# 버전 1: if 문(여러 동작에 적합)
order_total = 45.00
if order_total >= 50:
    shipping = 0
    discount = 0.10
    message = "Free shipping applied!"
else:
    shipping = 5.99
    discount = 0
    message = "Add $5 more for free shipping"
 
# 버전 2: 조건부 표현식(어색하고 반복적임)
order_total = 45.00
shipping = 0 if order_total >= 50 else 5.99
discount = 0.10 if order_total >= 50 else 0
message = "Free shipping applied!" if order_total >= 50 else "Add $5 more for free shipping"

여기서는 if 문 버전이 관련 로직을 한데 묶고 조건을 반복하지 않기 때문에 더 명확합니다.

10.7) 조건부 표현식이 가독성을 높일 때(그리고 그렇지 않을 때)

조건부 표현식은 강력한 도구이지만, 어떤 도구든 오용될 수 있습니다. 목표는 코드가 올바를 뿐만 아니라 명확하고 유지보수 가능하도록 작성하는 것입니다. 조건부 표현식을 효과적으로 사용하는 가이드라인을 살펴봅시다.

조건부 표현식이 가독성을 높일 때

1. 두 값 사이의 단순하고 명확한 선택

조건부 표현식은 로직이 직관적일 때 가장 빛납니다.

python
# 훌륭한 사용 - 매우 명확함
discount = 0.20 if is_member else 0.10
 
# 훌륭한 사용 - 의미가 분명함
status = "active" if user_logged_in else "inactive"
 
# 훌륭한 사용 - 단순한 불리언 선택
can_vote = True if age >= 18 else False
# 다만 더 단순하게 할 수도 있습니다: can_vote = age >= 18

2. 표현식 안에서 인라인 값 선택

인라인으로 값이 필요하고, 이를 따로 빼면 어색할 때:

python
# 훌륭한 사용 - 자연스러운 단수/복수 처리
print(f"Found {count} {'result' if count == 1 else 'results'}")
 
# 훌륭한 사용 - 인라인 계산 조정
total = base_price * (0.9 if is_sale else 1.0)
 
# 훌륭한 사용 - 조건부 포매팅
output = f"Status: {status.upper() if is_error else status.lower()}"

3. 기본값 설정

조건부 표현식은 대체(fallback) 값을 제공하는 데 잘 맞습니다.

python
# 훌륭한 사용 - 기본값 패턴
display_name = username if username else "Guest"
 
# 훌륭한 사용 - 기본값이 있는 설정
page_size = user_preference if user_preference else 25
 
# 훌륭한 사용 - 안전한 나눗셈
result = total / count if count > 0 else 0

조건부 표현식이 가독성을 해칠 때

1. 중첩 조건부 표현식

조건부 표현식을 중첩하면 읽기 어려운 코드가 됩니다.

python
# 가독성이 나쁨 - 중첩 조건부 표현식
grade = "A" if score >= 90 else ("B" if score >= 80 else ("C" if score >= 70 else "F"))
 
# 훨씬 더 좋음 - if-elif-else 문 사용
if score >= 90:
    grade = "A"
elif score >= 80:
    grade = "B"
elif score >= 70:
    grade = "C"
else:
    grade = "F"

if-elif-else 버전은 즉시 이해할 수 있습니다. 중첩 조건부 표현식은 로직을 이해하기 위해 주의 깊게 해석해야 합니다.

2. 복잡한 조건

조건 자체가 복잡하면 조건부 표현식은 읽기 어려워집니다.

python
# 가독성이 나쁨 - 복잡한 조건
result = "eligible" if age >= 18 and income > 30000 and credit_score > 650 and not has_bankruptcy else "not eligible"
 
# 더 좋음 - 명확한 구조의 if 문 사용
if age >= 18 and income > 30000 and credit_score > 650 and not has_bankruptcy:
    result = "eligible"
else:
    result = "not eligible"
 
# 더더 좋음 - 조건을 분해하기
meets_age_requirement = age >= 18
meets_income_requirement = income > 30000
meets_credit_requirement = credit_score > 650
has_clean_record = not has_bankruptcy
 
if meets_age_requirement and meets_income_requirement and meets_credit_requirement and has_clean_record:
    result = "eligible"
else:
    result = "not eligible"

3. 한 줄에 여러 조건부 표현식

한 줄에 여러 조건부 표현식을 결합하는 경우:

python
# 가독성이 나쁨 - 한 줄에 너무 많은 내용
price = base * (0.9 if is_member else 1.0) * (0.85 if is_sale else 1.0) + (0 if free_shipping else 5.99)
 
# 더 좋음 - 단계로 나누기
member_multiplier = 0.9 if is_member else 1.0
sale_multiplier = 0.85 if is_sale else 1.0
shipping_cost = 0 if free_shipping else 5.99
price = base * member_multiplier * sale_multiplier + shipping_cost
 
# 또는 로직이 복잡하면 if 문 사용
if is_member:
    price = base * 0.9
else:
    price = base
 
if is_sale:
    price = price * 0.85
 
if free_shipping:
    shipping_cost = 0
else:
    shipping_cost = 5.99
 
price = price + shipping_cost

결론

조건부 표현식이 코드를 더 명확하고 간결하게 만든다면 조건부 표현식을 사용하세요. 다음이 필요할 때는 if 문을 사용하세요.

  • 분기마다 여러 문을 실행해야 할 때
  • 두 분기보다 많을 때(elif)
  • 복잡한 조건이나 로직이 있을 때
  • 값 선택이 아니라 부수 효과나 동작이 필요할 때

확신이 서지 않을 때는, 영리함(cleverness)보다 명확성을 우선하세요. 코드는 작성되는 것보다 읽히는 일이 훨씬 많으므로, 독자를 위해 최적화해야 합니다.


조건부 표현식은 Python 도구 상자에 유용한 추가 요소입니다. 두 값 중 하나를 선택할 때 간결하고 우아한 코드를 작성할 수 있게 해줍니다. 가독성을 높일 때와 그렇지 않을 때를 이해하면, 언제 사용해야 하는지에 대해 정보에 기반한 결정을 내릴 수 있습니다.

기억해야 할 핵심 원칙은 다음과 같습니다.

  1. 조건부 표현식은 값을 만들어 내며 값이 필요한 어디에서든 사용할 수 있습니다
  2. 문법은 value_if_true if condition else value_if_false 입니다
  3. Python은 관련 있는 분기만 평가합니다(단락 평가)
  4. 대입과 표현식에서 단순한 값 선택에 이상적입니다
  5. 여러 동작, 복잡한 로직, 또는 두 분기보다 많은 경우에는 if 문을 사용하세요
  6. 가독성을 우선하세요—조건부 표현식이 이해하기 어렵다면 대신 if 문을 사용하세요

Python 학습을 계속하다 보면 조건부 표현식이 코드를 향상시키는 때를 직감적으로 알게 될 것입니다. 먼저 간단한 경우에서 연습하고, 점차 어떤 패턴에서 특히 빛나는지 알아가 보세요. 다음 장에서는 조건에 따라 동작을 반복할 수 있게 해주는 while 반복문 (loop)을 살펴볼 텐데, 이는 이 책의 이 부분에서 발전시킨 의사결정 능력을 바탕으로 합니다.

© 2025. Primesoft Co., Ltd.
support@primesoft.ai