Python의 제어 흐름(Control Flow)은 프로그램이 명령문을 실행하는 순서를 결정하는 핵심 개념입니다.
이를 통해 조건에 따라 특정 코드 블록을 실행하거나, 논리적 판단에 따라 다른 실행 경로를 선택하며, 효율적인 프로그램을 작성할 수 있습니다. 이번 포스팅에서는 Python의 주요 제어 흐름 요소를 예제와 함께 살펴보겠습니다.
1. 불리언 표현식 : Boolean Expressions
불리언(Boolean)은 참(True) 또는 거짓(False) 두 가지 값만을 가지는 데이터 타입입니다.
불리언 표현식은 이러한 불리언 값을 반환하는 조건식으로, 제어 흐름의 기반이 됩니다. 조건문에서 사용되어 코드 실행 여부를 결정합니다.
불리언 표현식의 특징
• 불리언 값은 bool 타입을 가집니다.
• 조건문의 평가 결과는 항상 불리언 값으로 반환됩니다.
• 비교 연산자와 논리 연산자를 사용하여 불리언 표현식을 생성할 수 있습니다.

예제: bool()로 값 평가하기

설명: Python에서는 숫자 0, 빈 문자열(""), 빈 리스트([]) 등은 **거짓(False)**로 평가되며, 그 외의 값은 **참(True)**으로 평가됩니다.
2. 관계 연산자 : Relational Operators
관계 연산자는 두 값을 비교하여 불리언 값을 반환합니다. Python에서는 다음과 같은 관계 연산자를 사용합니다:

관계 연산자는 조건문의 기본적인 판단 요소로 활용되며, 다른 연산자와 함께 사용하면 복잡한 조건도 처리할 수 있습니다.
예제: 학생 성적 평가

출력 결과:

3. 논리 연산자 : Logical Operators
논리 연산자는 불리언 값들을 조합하여 새로운 불리언 값을 반환합니다. 논리 연산자는 복잡한 조건을 처리하거나, 여러 조건을 결합하여 평가할 때 사용됩니다. Python의 주요 논리 연산자는 다음과 같습니다.
3.1 and 연산자
두 조건이 모두 참(True)일 때만 참(True)을 반환합니다.

3.2 or 연산자
두 조건 중 하나라도 참(True)이면 참(True)을 반환합니다.

3.3 not 연산자
조건의 값을 반전시켜, 참(True)은 거짓(False)으로, 거짓(False)은 참(True)으로 반환합니다.

예제: 논리 연산자 사용하기

출력 결과:

4. 조건문 : Conditional Statements
조건문은 특정 조건에 따라 코드 블록의 실행 여부를 결정합니다. Python에서는 if, elif, else 키워드를 사용하여 조건문을 구성합니다.
4.1 if 문
if 문은 조건이 **참(True)**일 때 해당 코드 블록을 실행합니다.


출력 결과:

4.2 else 문
else 문은 앞선 if 조건이 **거짓(False)**일 때 실행될 코드 블록을 정의합니다.


출력 결과:

4.3 elif 문
elif 문은 추가적인 조건을 검사할 때 사용하며, 첫 번째 조건이 거짓이고, elif 조건이 참일 경우 해당 코드 블록을 실행합니다.


출력 결과:

5. 진리값 평가 : Truth Value Testing
Python에서는 불리언이 아닌 값도 조건문에서 참(True) 또는 거짓(False)으로 평가될 수 있습니다. 일반적으로 다음과 같이 평가됩니다:
거짓으로 평가되는 값:
• None
• False
• 숫자형의 0 값 (예: 0, 0.0)
• 빈 시퀀스 (예: '', [], ())
• 빈 딕셔너리 {}
참으로 평가되는 값:
• 위에 언급되지 않은 모든 값

예제: 리스트 평가

출력 결과:

6. 삼항 연산자 : Ternary Operator
Python에서는 삼항 연산자를 사용하여 한 줄로 조건에 따른 값을 반환할 수 있습니다.

예제: 양수와 음수 판별

출력 결과:

7. pass 문
pass 문은 아무 동작도 하지 않는 문장으로, 코드 구조를 유지하거나, 실행이 필요한 위치를 임시로 채우는 데 사용됩니다.

pass 문 사용 방법
1. 코드 설계 중 사용: 나중에 구현할 로직의 자리표시자로 사용합니다.
2. 조건문에서의 사용: 특정 조건에서 아무 작업도 하지 않도록 설정합니다.
3. 반복문에서의 사용: 특정 반복을 무시하면서 전체 반복을 유지합니다.
4. 예외 처리에서의 사용: 특정 예외를 처리하지 않고 무시할 때 사용됩니다.
주의 사항
• pass 문은 프로그램 실행에 아무런 영향을 미치지 않으므로, 최종 코드에서는 반드시 필요한 로직으로 대체해야 합니다.
• 조건문이나 반복문에서 pass를 사용할 때, 항상 주석을 통해 그 의도를 명확히 표현해야 합니다.
함수를 설계할 때 구체적인 구현 없이 함수 이름과 구조만 먼저 정의하고 싶을 때 사용할 수도 있습니다.
예제: 미완성 함수

출력 결과:

8. 예외 처리 : Exception Handling
프로그램 실행 중 발생할 수 있는 오류를 처리하기 위해 try, except, finally 블록을 사용합니다. 이를 통해 프로그램이 예기치 않게 종료되는 것을 방지하고, 오류 상황을 처리할 수 있습니다.
예외 처리 구성 요소
1. try 블록: 오류가 발생할 수 있는 코드를 실행합니다.
2. except 블록: 발생한 오류를 처리합니다.
3. finally 블록: 오류 발생 여부와 관계없이 항상 실행됩니다.
예외 처리 시 주의 사항
• 발생한 오류를 무조건 무시하지 말고, 상황에 맞는 대체 동작을 구현해야 합니다.
• 필요할 경우 로그를 남겨 디버깅에 활용합니다.

예제: 0으로 나누기 예외 처리

출력 결과:

Python의 제어 흐름은 프로그램의 논리적 구조를 구성하는 데 필수적입니다. 이를 통해 조건에 따라 코드 블록을 실행하고, 오류를 관리하며, 복잡한 조건을 간결하게 표현할 수 있습니다. 특히, pass 문은 설계 단계에서 코드 구조를 유지하는 데 유용하지만, 필요 이상으로 남용하지 않도록 주의해야 합니다. 이상으로 이번 포스팅을 마치겠습니다.
'Language > Python' 카테고리의 다른 글
| <Python>#6 : Python Strings : 기본 개념부터 문자열 메서드까지 (1) | 2025.01.06 |
|---|---|
| <Python>#5 : Python Loop : for와 while로 반복 제어하기 (7) | 2025.01.04 |
| <Python>#4 : Python List : 리스트 생성부터 활용까지 (6) | 2025.01.04 |
| <Python>#2 : Python Functions : 함수 정의부터 호출까지 (10) | 2025.01.02 |
| <Python>#1 : Python 기본 문법 : Python Syntax와 Variable Types (4) | 2025.01.01 |