본문 바로가기
개발&프로그래밍

[python] Python의 제어 흐름 : if문, for문, range, break, continue, match

by 재아군 2024. 10. 23.

 

Python의 제어 흐름 : if문, for문, range, break, continue, match

 

 

 

Python은 다양하고 강력한 제어 흐름 도구를 제공합니다. 이러한 도구들은 프로그램의 실행 경로를 결정하고, 코드의 구조를 형성하며, 복잡한 로직을 구현하는 데 필수적입니다. 이 글에서는 Python의 주요 제어 흐름 도구들을 자세히 살펴보고, 각각의 사용법과 특징을 예제와 함께 설명하겠습니다.

 

해당 글은 python document 3.12.5 버전 기준입니다.

 

1. if 문: 조건부 실행의 기본

if 문은 가장 기본적인 제어 흐름 도구로, 특정 조건에 따라 코드 블록의 실행 여부를 결정합니다. Python의 if 문은 다른 프로그래밍 언어와 비슷하지만, else if 대신 elif를 사용한다는 특징이 있습니다.

x = int(input("정수를 입력하세요: "))
if x < 0:
    print('음수입니다')
elif x == 0:
    print('0입니다')
elif x == 1:
    print('1입니다')
else:
    print('1보다 큰 양수입니다')

 

이 예제에서 볼 수 있듯이, if 문은 여러 조건을 순차적으로 검사하며, 첫 번째로 참이 되는 조건에 해당하는 코드 블록을 실행합니다. else 블록은 모든 조건이 거짓일 때 실행됩니다.

 

 

2. for 문: 반복의 핵심

for 문은 시퀀스(리스트, 튜플, 문자열 등)의 요소들을 순회하는 데 사용됩니다. Python의 for 문은 다른 언어들과 달리 매우 유연하고 강력합니다.

fruits = ['apple', 'banana', 'cherry']
for fruit in fruits:
    print(f"I like {fruit}")

 

이 예제는 리스트의 각 요소를 순회하며 출력합니다. for 문은 딕셔너리, 집합 등 다양한 이터러블 객체에 대해 사용할 수 있습니다.

 

 

3. range() 함수: 숫자 시퀀스 생성

range() 함수는 숫자 시퀀스를 생성하는 데 사용되며, 주로 for 문과 함께 사용됩니다.

for i in range(5):
    print(i)  # 0부터 4까지 출력

for i in range(2, 8):
    print(i)  # 2부터 7까지 출력

for i in range(1, 10, 2):
    print(i)  # 1, 3, 5, 7, 9 출력

 

range(start, stop, step) 형식으로 사용되며, start는 시작 값(기본값 0), stop은 끝 값(미포함), step은 증가량(기본값 1)입니다.

 

 

4. break와 continue 문

break와 continue는 루프의 흐름을 제어하는 데 사용됩니다.

  • break: 루프를 즉시 종료하고 루프 밖으로 나갑니다.
  • continue: 현재 반복을 중단하고 다음 반복으로 넘어갑니다.
for n in range(2, 10):
    for x in range(2, n):
        if n % x == 0:
            print(f"{n} equals {x} * {n//x}")
            break
    else:
        print(f"{n} is a prime number")

 

이 예제에서 break는 내부 for 루프를 종료하는 데 사용됩니다. else 절은 break 없이 루프가 완전히 실행되었을 때만 실행됩니다.

 

5. pass 문: 아무것도 하지 않기

pass 문은 문법적으로 문장이 필요하지만 실제로 아무 작업도 수행하지 않아야 할 때 사용합니다.

def function_not_implemented_yet():
    pass

 

이는 함수나 클래스의 골격을 만들 때 유용합니다.

 

6. match 문: 패턴 매칭

Python 3.10에서 도입된 match 문은 다양한 패턴에 대해 값을 매칭하는 강력한 도구입니다.

def describe_type(item):
    match item:
        case int():
            return "It's an integer"
        case str():
            return "It's a string"
        case list():
            return "It's a list"
        case _:
            return "I don't know what it is"

print(describe_type(5))  # It's an integer
print(describe_type("hello"))  # It's a string
print(describe_type([1, 2, 3]))  # It's a list
print(describe_type({"a": 1}))  # I don't know what it is

 

match 문은 switch 문과 비슷하지만 더 강력한 패턴 매칭 기능을 제공합니다.

 

7. 함수 정의

함수는 코드의 재사용성과 모듈화를 높이는 핵심 도구입니다. Python에서는 def 키워드를 사용해 함수를 정의합니다.

def greet(name, greeting="Hello"):
    """이 함수는 이름과 인사말을 받아 인사를 출력합니다."""
    print(f"{greeting}, {name}!")

greet("Alice")  # Hello, Alice!
greet("Bob", "Hi")  # Hi, Bob!

 

이 예제에서 볼 수 있듯이, Python 함수는 기본 인자 값, 문서화 문자열(docstring) 등의 기능을 제공합니다.

 

 

8. 함수의 고급 기능

Python 함수는 다양한 고급 기능을 제공합니다:

  • 키워드 인자: 인자의 이름을 명시적으로 지정할 수 있습니다.
  • 가변 인자 리스트: *args를 사용해 임의 개수의 위치 인자를 받을 수 있습니다.
  • 키워드 가변 인자: **kwargs를 사용해 임의 개수의 키워드 인자를 받을 수 있습니다.
  • 람다 함수: 익명 함수를 간단히 정의할 수 있습니다.
def print_info(*args, **kwargs):
    for arg in args:
        print(arg)
    for key, value in kwargs.items():
        print(f"{key}: {value}")

print_info("Hello", "World", name="Alice", age=30)

# 람다 함수 예제
square = lambda x: x**2
print(square(5))  # 25

 

 

9. 코딩 스타일

Python 커뮤니티는 PEP 8이라는 스타일 가이드를 통해 일관된 코딩 스타일을 권장합니다. 주요 권장 사항은 다음과 같습니다:

  • 들여쓰기에 4개의 공백을 사용합니다.
  • 한 줄의 길이는 79자를 넘지 않도록 합니다.
  • 함수와 클래스 정의 사이에 빈 줄을 두 개 사용합니다.
  • 클래스 내의 메서드 정의 사이에는 빈 줄을 한 개 사용합니다.
  • import 문은 파일의 맨 위에 배치합니다.
  • 클래스 이름은 CamelCase, 함수와 변수 이름은 lowercase_with_underscores 형식을 사용합니다.
  • 상수는 ALL_CAPS 형식을 사용합니다.

이러한 가이드라인을 따르면 코드의 가독성과 일관성이 향상됩니다.

 

 

결론

Python의 제어 흐름 도구들은 프로그래밍의 핵심 개념을 구현하는 데 필수적입니다.

if 문을 통한 조건부 실행, for 문과 while 문을 이용한 반복, 함수를 통한 코드 모듈화 등은 효과적인 프로그램 작성의 기본이 됩니다.

또한 Python은 list comprehension, generator expression 등 더 고급적인 제어 흐름 도구도 제공하여 간결하고 효율적인 코드 작성을 가능하게 합니다.

 

이러한 도구들을 숙달하고 적절히 활용하면, 복잡한 문제를 해결하는 강력하고 유연한 Python 프로그램을 작성할 수 있습니다.

또한 PEP 8 스타일 가이드를 따르면 다른 개발자들과 협업할 때 코드의 일관성과 가독성을 유지할 수 있습니다.

 

Python의 제어 흐름 도구는 단순히 프로그램의 실행 경로를 결정하는 것 이상의 역할을 합니다.

이들은 프로그래머의 사고 방식을 구조화하고, 복잡한 문제를 더 작고 관리하기 쉬운 부분으로 나누는 데 도움을 줍니다.

따라서 이러한 도구들을 깊이 이해하고 효과적으로 사용하는 것은 Python 프로그래밍 숙련도를 높이는 핵심 요소라고 할 수 있습니다.

댓글