[Python] 조건문

Poke·2024년 4월 1일

조건문은 주어진 조건에 따라 코드를 실행하거나, 실행하지 않게 만들고 싶을때 사용하는 구문. 조건을 기반으로 실행의 흐름을 변경하는 조건분기.
조건이 참(True)인지 거짓(False)인지에 따라 코드의 실행 경로를 변경함.

IF…Else, ELIF

# 기본구조
if 조건1:
    # 조건1이 참일 때 실행될 코드
elif 조건2:
    # 조건1이 거짓이고, 조건2가 참일 때 실행될 코드
else:
    # 모든 조건이 거짓일 때 실행될 코드
  • if, else, elif 조건문 뒤에는 콜론(:)을 붙여야함
  • if, else, elif 조건문 다음 문장은 들여쓰기를 해야함.

파이썬에서는 =을 할당으로 사용하고 있으므로, 조건문에서 값을 비교할때는 ==으로 사용해야함.

조건부 표현식(conditional expression)

value_if_true if condition else value_if_false

조건문에서 사용되는 조건은 비교연산자(==, !=, <, >, <=, >=), 논리연산자(and, or, not) 그리고 기타 표현식(in)이 있다. 조건의 결과는 항상 boolan 값이여야함.

논리연산자 and, or, not
and 연산자는 두 조건이 모두 참일때 참을 반환함. 한쪽 또는 양쪽조건이 모두 거짓이면 거짓을 반환함.
or 연산자는 두 조건 중 하나라도 참이면 참을 반환함. 두 조건이 모두 거짓인 경우에만 거짓을 반환.
not 연산자는 조건의 논리 값을 반전시킴. 참을 거짓으로, 거짓을 참으로 바꿈.
멤버십 연산자 in
in 연산자는 시퀀스(str, list, tuple등)내에 특정 값의 존재 여부를 검사할때 사용함. 값이 시퀀스 내에 있으면 참, 없으면 거짓을 반환함.
not in
not in은 어떤 값이 시퀀스내에 존재하지 않음을 검사할때 사용함. 값이 시퀀스에 포함되어 있지 않으면 참, 포함되어있으면 거짓을 반환함.

Nested if
조건문 안에 또 다른 조건문을 포함하는 것. 중첩 조건문을 사용하면 복잡한 결정 구조를 만들 수 있지만, 너무 많이 중첩되면 코드의 가독성이 떨어짐.

if 조건1:
    if 내부 조건:
        # 내부 조건이 참일 때 실행될 코드
    else:
        # 내부 조건이 거짓일 때 실행될 코드
else:
    # 조건1이 거짓일 때 실행될 코드

pass 키워드
아무런 동작을 하지 않는 문을 나타내는데 사용.

if condition:
    pass

조건문 사용시 주의점 및 가독성 향상방법

  • 깊은 중첩 피하기
    복잡한 로직을 작은 함수로 분리하기

    def authenticate_user(username, password):
    if username == "admin" and password == "admin123":
        return True
    return False
    
    if authenticate_user("admin", "admin123"):
      print("로그인 성공")
    else:
      print("로그인 실패")
    
  • 명확하지 않은 조건
    복잡한 조건을 변수에 할당하여 조건의 의도를 명확히 하기

  • 논리연산자 활용
    and, or, not 연산자를 사용하여 여러 조건을 한줄에 표현하기

Match Case

파이썬 3.10 부터 추가된 match문은 패턴 매칭기능을 제공.
다른 프로그래밍 언어의 switch문이나 case문과 유사함.

match subject
  case pattern1:
  	# pattern1과 일치할 때 실행할 코드
  case pattern2:
  	# pattern2와 일치할 때 실행할 코드
  ...
  case _:
  	# 어떤 패턴과도 일치하지 않을 때 실행할 코드 
  • subject : 비교할 대상 값
  • case pattern : subject가 일치해야할 패턴.
  • '-' : 와일드카드패턴. 어떤 값이든 일치시킴.

soft keywords
특정 문맥에서만 키워드로 작동하는 단어들을 의미.
전통적인 keyword와 달리, 문맥에 따라 키워드로서의 기능을 가지거나 일반 식별자로써 작동할 수 있음. 파이썬 인터프리터가 키워드인지 식별자인지 구분할 수 있게됨.

0개의 댓글