파이썬 조건문에 대한 모범 사례

파이썬 조건문에 대한 모범 사례

이 글은 파이썬에서 조건문을 사용하는 모범 사례를 설명합니다.

YouTube Video

파이썬 조건문에 대한 모범 사례

파이썬에서 if 문은 조건 분기를 구현하기 위한 기본 구조이며, 코드 가독성과 유지보수성에 큰 영향을 미칩니다. 여기서 우리는 if 문을 사용하는 모범 사례에 대해 자세히 논의하겠습니다.

명확한 조건식을 사용하세요

조건 표현식을 간결하고 명확하게 작성하고, 중복된 문장은 피하세요.

1condition = True
2
3### Bad Example
4if condition == True:
5    pass
6
7### Good Example
8if condition:
9    pass
  • 파이썬에서는 if condition: 를 작성하여 조건이 참임을 나타낼 수 있습니다.

여러 조건 결합하기

여러 조건을 결합할 때, and 또는 or를 사용하세요. 그러나 조건식이 복잡해지면 가독성이 저하될 수 있으므로 다음과 같은 조정을 고려하세요:.

 1age = 15
 2is_student = True
 3
 4### Bad Example
 5# Complex condition
 6if (age > 18 and age < 65) or (is_student and age > 15):
 7    pass
 8
 9### Good Example
10# Improving readability
11is_working_age = 18 < age < 65
12is_eligible_student = is_student and age > 15
13
14if is_working_age or is_eligible_student:
15    pass
  • 조건을 분리하고 변수에 할당함으로써 가독성을 향상시킬 수 있습니다.

and/or 단락 평가

andor를 사용하는 조건 표현식에서 결과가 왼쪽 값만으로 결정될 수 있는 경우, 단락 평가가 발생하여 오른쪽은 평가되지 않습니다. 이 점을 이해하면 불필요한 처리를 피하고 오류를 방지할 수 있습니다.

 1user = None
 2def expensive_check():
 3    return True
 4
 5# Example of short-circuiting with 'and'
 6if user and user.is_active:
 7    # If user is None, user.is_active will NOT be evaluated
 8    print("Active user found.")
 9
10# Example of short-circuiting with 'or'
11if user.is_admin or expensive_check(user):
12    # If user.is_admin is True, expensive_check will NOT be called.
13    print("Access granted.")
14else:
15    print("Access denied.")
  • 단락 평가를 활용하면 처리 효율성과 안정성을 높일 수 있습니다.

andor의 우선순위

andor보다 우선순위가 높습니다. 따라서 조건을 단순히 결합하면 의도하지 않은 결과를 얻을 수 있습니다. 의도를 명확히 하기 위해 괄호를 사용하는 것이 중요합니다.

 1age = 15
 2is_student = True
 3
 4### Unclear example
 5# This is interpreted as: age > 18 and (age < 65 or is_student)
 6if age > 18 and age < 65 or is_student:
 7    pass
 8
 9### Clear example
10# Explicit parentheses make the intended logic obvious
11if (age > 18 and age < 65) or is_student:
12    pass
  • 괄호를 사용하면 andor의 우선순위를 명확히 할 수 있어, 예상치 못한 버그의 위험을 줄일 수 있습니다.

Truthy와 Falsy에 대해 이해하기

파이썬에서는 다음 값들이 False로 평가됩니다:.

  • 없음
  • 거짓
  • 숫자 0 (예: 0.0 포함)
  • 빈 시퀀스 타입 (예: 빈 리스트, 튜플, 문자열)
    • 예시: [], (), ""
  • 빈 딕셔너리
    • 예시: {}

이를 활용하면 조건식을 단순화할 수 있습니다.

1items = [1, 2, 3]
2
3### Bad Example
4if len(items) > 0:
5    pass
6
7### Good Example
8if items:
9    pass

elifelse의 적절한 사용

여러 조건을 평가할 때는 elif를 사용하세요. 끝에 기본 동작을 정의하기 위해 else를 사용하세요.

 1score = 80
 2
 3if score >= 90:
 4    grade = "A"
 5elif score >= 80:
 6    grade = "B"
 7elif score >= 70:
 8    grade = "C"
 9else:
10    grade = "F"
  • else는 필수는 아닙니다. 모든 조건이 충족되면 생략할 수 있습니다.
  • 조건문의 순서에 주의하고 중복 없이 논리적으로 배열하세요.

중첩의 깊이를 제한하세요

if 문을 깊게 중첩하면 코드 가독성이 떨어집니다.

 1def access_resource():
 2    return True
 3
 4### Bad Example
 5def deep_nest(user, resource):
 6    if user.is_authenticated:
 7        if user.has_permission:
 8            if resource.is_available:
 9                access_resource()
10
11### Good Example
12def early_return(user, resource):
13    if not user.is_authenticated:
14        return
15    if not user.has_permission:
16        return
17    if not resource.is_available:
18        return
19
20    access_resource()
  • 조기 반환을 사용하면 중첩을 줄이고 코드를 더 간결하게 만들 수 있습니다.

한 줄로 작성된 if 문은 피하세요

if문을 한 줄로 작성하는 것이 가능하지만, 이는 가독성을 떨어뜨릴 수 있습니다.

 1condition = False
 2def do_something():
 3    return True
 4
 5### Bad Example
 6if condition: do_something()
 7
 8### Good Example
 9if condition:
10    do_something()
  • 한 줄 if문은 짧은 조건이나 동작에만 허용되며, 너무 장황한 코드는 피해야 합니다.

삼항 연산자나 or로 간소화하기

간단한 조건 분기에서는 삼항 연산자나 or를 사용하면 코드를 더 간결하게 만들 수 있습니다. 하지만 과도하게 사용하면 코드의 가독성이 떨어질 수 있으므로, 단순하고 직관적인 조건에만 사용하는 것이 좋습니다.

 1is_admin = True
 2input_name = None
 3
 4# Regular if statement
 5if is_admin:
 6    role = "Administrator"
 7else:
 8    role = "User"
 9
10# Simplified using an inline if
11role = "Administrator" if is_admin else "User"
12
13# Use 'or' to provide a default value
14name = input_name or "Guest"
  • 단순한 조건에서는 삼항 연산자나 or를 사용하면 코드를 더 짧고 이해하기 쉽게 만들 수 있습니다.

조건식을 캐싱하기

비용이 많이 드는 계산이나 함수 호출을 포함한 조건식은 변수에 캐싱하여 성능을 향상시킬 수 있습니다.

 1def expensive_function():
 2    pass
 3
 4def another_expensive_function():
 5    pass
 6
 7### Bad Example
 8if expensive_function() and another_expensive_function():
 9    pass
10
11### Good Example
12result1 = expensive_function()
13result2 = another_expensive_function()
14if result1 and result2:
15    pass

요약

Python의 if 문은 간단하고 강력한 도구이지만 잘못 사용하면 코드가 복잡하고 읽기 어려워질 수 있습니다. 여기에서 소개된 모범 사례를 채택함으로써 코드의 가독성, 유지보수성, 그리고 효율성을 향상시킬 수 있습니다.

위의 기사를 보면서 Visual Studio Code를 사용해 우리 유튜브 채널에서 함께 따라할 수 있습니다. 유튜브 채널도 확인해 주세요.

YouTube Video