Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python에 do...while 루프가 없는 이유는 무엇일까?

Python에 do...while 루프가 없는 이유

Python에는 C, C++, Java 등 다른 많은 프로그래밍 언어에서 흔히 볼 수 있는 do...while 루프가 존재하지 않습니다. 이는 단순한 기능 누락이 아니라, Python의 언어 설계 철학에 따른 의도적인 결정입니다.

PEP 315 제안과 거절

do...while 문을 Python에 도입하자는 제안인 PEP 315(Python Enhancement Proposal)가 있었지만, 최종적으로 거절되었습니다. 거절 사유는 do...while 문이 Python의 모든 복합문(compound statement)이 공통적으로 따르는 '문장: 들여쓰기 블록(statement: indented block)'이라는 일반적인 구조에 맞지 않기 때문입니다.

Python의 if, for, while 등 모든 복합문은 헤더 문장 뒤에 콜론(:)을 붙이고, 그 아래에 들여쓰기된 코드 블록이 오는 통일된 문법을 사용합니다. 반면 do...while은 실행할 블록이 먼저 오고 조건 검사가 나중에 오는 구조라서, 이 일관된 형식 안에 자연스럽게 녹아들기 어렵습니다.

귀도 반 로섬의 공식 입장

Python의 창시자 귀도 반 로섬(Guido van Rossum)은 해당 PEP에 대해 다음과 같이 말하며 거절을 요청했습니다.

"이 PEP를 거절해 주십시오. 이러한 방향의 변형을 더 추가한다고 해서 언어가 더 우아해지거나 배우기 쉬워지지는 않습니다. 다만 성급한 몇몇 개발자의 타이핑 시간을 아껴줄 뿐, 그 결과로 작성된 코드를 읽고 유지보수해야 하는 다른 사람들에게는 오히려 코드의 의미를 파악하기 어렵게 만들 뿐입니다."

이는 Python이 '읽기 쉬운 코드가 곧 좋은 코드'라는 철학을 얼마나 중요하게 여기는지 잘 보여주는 대표적인 사례입니다. 새로운 문법을 추가하는 비용보다 코드의 가독성과 일관성을 유지하는 것을 더 큰 가치로 판단한 것입니다.

do...while 루프의 대체 방법

그렇다면 최소 한 번은 블록을 실행하고 조건을 나중에 검사하고 싶을 때는 어떻게 해야 할까요? Python에서는 관용적으로 while True 루프와 break 문을 조합하여 동일한 효과를 얻습니다.

while True:
# 최소 한 번은 실행되는 코드
value = get_input()
if condition_met(value):
break # 조건이 충족되면 루프 종료

이처럼 Python 개발자들은 명시적인 break 문을 통해 루프 탈출 지점을 명확히 드러내는 방식으로 do...while의 부재를 자연스럽게 대체하고 있으며, 실제로 이 패턴은 Python 커뮤니티에서 널리 받아들여진 표준 관행입니다.