프로그래밍파이썬 백엔드/주니어 개발자

파이썬에서 루프와 break/continue/else의 작동 방식에 대해 설명하십시오. 루프에 대한 else는 어떻게 작동합니까?

Hintsage AI 어시스턴트로 면접 통과

답변.

파이썬에서는 if 이후뿐만 아니라 forwhile 루프 이후에도 else를 사용할 수 있습니다. else 블록은 루프가 "정상적인" 방식으로 종료되었을 때만 실행됩니다 — 즉, break로 종료되지 않았을 때입니다. 이를 통해 요소 검색과 같은 작업을 우아하게 구현할 수 있습니다.

예시:

for x in range(5): if x == 3: print('break!') break else: print('루프가 break 없이 종료되었습니다') # 실행되지 않음
for x in range(5): if x == 10: break else: print('루프가 break 없이 종료되었습니다') # 실행됨

이 기능은 종종 "성공하지 않은 검색"을 위해 사용됩니다: break가 발생하지 않으면, 요소가 발견되지 않았다는 의미입니다.

속임수가 있는 질문.

루프가 종료되면 항상 else 블록이 실행됩니까? 루프가 비어 있다면 어떻게 됩니까?

답변: 네, break가 없으면, else는 루프 본문에 한 번도 들어가지 않아도 항상 실행됩니다:

for x in []: print('아무것도') else: print('else!') # 이것이 출력될 것입니다

주제의 미세한 차이를 모르고 발생한 실제 오류의 예.


이야기

프로젝트: 문서 파서.

문제: 리스트에서 키를 검색하고 루프 종료 후 else 밖에서 "not found" 플래그를 설정했습니다. 결과적으로 요소 발견 기능이 비정상적으로 작동하고, break가 발생하지 않으면 잘못된 결과가 나왔습니다.


이야기

프로젝트: 고유한 토큰 생성.

문제: 토큰 생성 로직이 break에 의한 올바른 종료에 의존했으며, else는 "예외적인 경우"로 잘못 간주되었습니다. 사실상 99%의 실행에서 발생하여 사용자 인증 로직이 깨졌습니다.


이야기

프로젝트: 네트워크 API를 위한 테스트 스크립트.

문제: while 이후 else의 잘못된 이해로 인해 타임아웃 처리를 위해 이를 사용했지만, 루프가 break 없이 종료되었고 타임아웃이 포착되지 않아 테스트에서 "조용한" 오류가 발생했습니다.