HOWTO · Python
Python의 if 문 내에서 아무것도 하지 않음
`pass`를 사용해 조건 분기에 동작 없이 자리 표시자를 두고 블록의 문법적 유효성을 유지하는 방법을 알아보세요.
이 페이지의 내용
Python에서는 if, elif 또는 else 헤더 뒤에 들여쓴 문장이 필요합니다. 분기에서 아직 수행할 작업이 없다면 pass 문을 사용해 조건문을 문법적으로 완성된 상태로 유지하면서 분기를 비워 둘 수 있습니다. 의도적인 자리 표시자로 유용하지만, 조건 검사를 건너뛰거나 동작을 대신 구현해 주지는 않습니다.
if 블록에서 pass의 역할
pass는 아무 동작도 하지 않는 문입니다. Python이 이 문에 도달해도 동작을 수행하지 않으며, 이후 실행은 주변 제어 흐름에 따라 이어집니다. if 분기가 끝나면 조건문 다음으로 진행하고, 루프 본문에서는 루프 밖으로 나가는 대신 다음 반복을 시작할 수 있습니다. 조건은 여전히 정상적으로 평가됩니다.
스위트를 비워 둘 수는 없습니다. 예를 들어 if ready: 다음에 같은 들여쓰기 수준의 문장을 바로 두는 것은 분기를 비워 두는 올바른 방법이 아닙니다. 의도적으로 수행할 작업이 없다면 분기 안에 pass를 넣으세요. 루프, 함수, 클래스 정의 같은 다른 복합문에도 같은 규칙이 적용됩니다. 각 스위트에는 문장이 필요하며, pass가 그 역할을 할 수 있습니다.
조건 분기에서 pass 사용하기
pass가 들어 있는 분기도 조건문의 일부입니다. Python은 조건을 평가해 일치하는 분기에 들어가고, 그 분기가 끝나면 조건문 다음으로 진행합니다. 앞선 조건들이 거짓이면 elif 분기를 살펴보며, 해당 분기의 조건도 참이어야 실행됩니다. else에는 자체 조건이 없으며, 앞선 if와 elif 조건이 모두 거짓일 때만 실행됩니다. pass가 다른 분기를 실행시키지는 않습니다.
다음 예제를 실행해 보세요.
이 섹션의 코드와 표시되는 레이블 또는 출력은 영어로 유지됩니다.
x = 10
if x > 5:
pass
else:
print("x is not greater than 5")
print("Continue with the rest of the program")
Continue with the rest of the program
x를 10으로 설정하면 조건이 참이므로 Python은 첫 번째 분기에 들어가 pass를 실행합니다. else 본문은 건너뛰고 마지막 print 문은 실행됩니다. 제공된 실행은 종료 코드 0으로 성공적으로 완료되었으며 위에 표시된 출력을 출력했습니다. x를 5 이하로 바꾸면 마지막 문장보다 먼저 else 본문이 실행됩니다.
예제의 출력 이해하기
이 예제에서는 pass를 x > 5인 분기에서만 사용합니다. 그 분기에서는 아무것도 출력하지 않지만 프로그램을 멈추지도 않습니다. 뒤에 나오는 print 문은 조건문 바깥에 있으므로 어느 분기가 끝나든 실행됩니다. x가 5 이하이면 else 분기가 그 문장보다 먼저 메시지를 출력합니다.
출력을 읽을 때 이 차이가 중요합니다. 한 분기에서 아무 동작도 하지 않아도 조건문 다음에 오는 문장이 억제되는 것은 아닙니다. 조건에 맞지 않는 분기는 선택되지 않을 뿐입니다. 프로그램이 표시하는 내용을 바꾸려면 pass가 조건이나 다른 문장에 영향을 줄 것이라고 기대하는 대신 해당 분기에 원하는 동작을 추가하세요.
pass를 사용할 때와 다른 문장을 선택할 때
분기는 있어야 하지만 구현을 의도적으로 미뤄 둔 경우 pass를 사용하세요. 예를 들어 함수의 윤곽을 잡거나 특정 입력을 어떻게 처리할지 결정하는 동안 사용할 수 있습니다. 동작을 정하면 자리 표시자를 실제 동작으로 바꾸세요. 그전까지 분기에서는 아무 작업도 하지 않으므로, 주변 이름이나 간결한 주석을 통해 독자가 이 문장이 있는 이유를 알 수 있어야 합니다.
pass는 테스트나 디버깅을 위해 작동 중인 코드를 일시적으로 비활성화하는 방법이 아닙니다. 비활성화한 문장을 보존해 주지 않으며, 분기의 조건이 거짓인 것처럼 실행되게 하지도 않습니다. 디버깅 중 실행을 제어하려면 의도한 조건이나 디버거를 사용하세요. 코드를 잠시 보존하려면 버전 관리 기능을 적절히 사용하거나 주의해서 주석 처리하세요.
프로그램에 실제 동작이 필요하면 다른 문장을 선택하세요. return은 결과를 반환하거나 값 없이 함수에서 나올 때, continue는 다음 루프 반복으로 넘어갈 때, break는 루프를 빠져나올 때 사용합니다. 이 문장들은 제어 흐름을 바꾸지만 pass는 바꾸지 않습니다. 분기별 동작이 전혀 필요 없다면 빈 분기를 유지하는 대신 조건문을 단순화할 수 있는지 살펴보세요.