파이썬에서 반복 가능한 객체(iterable)는 for문과 함께 자주 사용됩니다.
그런데 여기에 return, break, continue, pass 같은 흐름 제어 키워드를 함께 쓰면 어떻게 동작할까요?
이번 글에서는 이터러블한 객체와 흐름 제어의 조합이 어떤 흐름을 만들어내는지 깔끔하게 정리해보겠습니다.
1. break와 이터러블: 반복 중단
nums = [1, 2, 3, 4, 5]
for n in nums:
if n == 3:
break
print(n)
출력 결과
1
2
- break는 반복을 완전히 종료
- 이후 항목은 절대 실행되지 않음
2. continue와 이터러블: 일부 항목 건너뛰기
nums = [1, 2, 3, 4, 5]
for n in nums:
if n % 2 == 0:
continue
print(n)
출력 결과
1
3
5
- 조건을 만족하면 해당 반복만 건너뜀
- 다음 항목부터 다시 반복 진행됨
3. Pass와 이터러블: 아무것도 하지 않음(자리채움)
for n in [1, 2, 3]:
if n == 2:
pass # 아무것도 하지 않음
print(n)
출력 결과
1
2
3
- pass는 코드 구조상 블록이 필요한 위치에 사용
- 실행에 아무 영향 없음
4. return과 이터러블: 함수 내 반복 중간 종료
def find_first_even(nums):
for n in nums:
if n % 2 == 0:
return n # 함수 종료
print(find_first_even([1, 3, 5, 6, 8]))
출력 결과
6
- return은 함수 자체를 종료시킴
- 반복 중이더라도 return을 만나면 함수 즉시 종료
5. yield가 있는 경우: 반복을 지연시키며 제어 가능
def even_numbers(nums):
for n in nums:
if n % 2 == 0:
yield n # 하나씩 반환
for even in even_numbers([1, 2, 3, 4]):
print(even)
출력 결과
2
4
- yield는 이터레이터를 직접 생성
- for문에서 값을 필요할 때마다 꺼내 쓰는 방식 (lazy evaluation)
정리하면
| 키워드 | 설명 | 반복에 대한 영향 |
| break | 반복 중지 | 반복 즉시 종료 |
| continue | 현재 반복만 건너뛰고 다음 반복 진행 | 다음 항목으로 계속 진행 |
| pass | 아무 동작 없이 자리만 차지 | 영향 없음 |
| return | 함수 자체 종료 | 반복 포함 전체 함수 종료 |
| yield | 값을 반환하고 반복을 유지 | 하나씩 반환하며 반복 유지 |
- 이터러블 + 흐름 제어 키워드는 반복을 매우 유연하게 제어할 수 있게 해줍니다.
- 반복 중단이 필요한 경우 break, 일부 스킵은 continue, 결과 반환은 return,반복을 효율적으로 유지하고 싶다면 yield를 활용하세요.
'파이썬 > 기초 프로그래밍' 카테고리의 다른 글
| 래퍼(Wrapper)와 데코레이터(Decorator): 파이썬 함수 확장의 핵심 (0) | 2025.06.22 |
|---|---|
| 기능을 코드로 추상화 개념 (0) | 2025.06.22 |
| return, break, continue, pass 그리고 finally의 관계 완벽 정리 (0) | 2025.06.22 |
| 파이썬 예외 처리 구문 완전 정복: try, except, else, finally (0) | 2025.06.22 |
| 리스트 컴프리헨션과 제너레이터의 메모리 사용 차이! (0) | 2025.06.22 |