python에서 Guard의 역할

Tasker_Jang·2026년 3월 20일

1. 가드(Guard)란?

프로그래밍에서 가드(Guard) 란 특정 조건을 만족할 때만 코드가 실행되도록 막아주는 장치입니다. 경비원이 조건을 확인하고 통과시키는 것과 같습니다.

if __name__ == "__main__":
    run()

이 코드가 대표적인 가드 패턴입니다. "직접 실행할 때만 run()을 호출해라" 라는 조건을 걸어두는 것입니다.


2. __name__이란?

__name__은 Python이 자동으로 제공하는 특수 변수로, 파일이 어떤 방식으로 실행되느냐에 따라 값이 달라집니다.

# 직접 실행할 때
python my_module.py
__name__  # → "__main__"

# 다른 파일에서 import 될 때
import my_module
__name__  # → "my_module"  (파일 이름)

3. 왜 필요한가

Python 파일은 두 가지 방식으로 실행될 수 있습니다.

# 방식 1 — 직접 실행
python my_module.py

# 방식 2 — 다른 파일에서 import
import my_module

가드가 없으면 import 순간 실행 코드가 바로 돌아버립니다.

# 가드 없이
def run():
    print("실행!")

run()  # import 하는 순간 바로 실행돼버림 ❌
# main.py에서
import my_module  # → "실행!" 출력됨 — 의도하지 않은 동작!

가드가 있으면 import 시에는 실행되지 않습니다.

# 가드 있으면
def run():
    print("실행!")

if __name__ == "__main__":
    run()
# 직접 실행
python my_module.py  # → "실행!" 출력됨 ✅

# import
import my_module     # → 아무것도 출력 안됨 ✅

4. __name__ 직접 확인해보기

# my_module.py
print(f"__name__ = {__name__}")

if __name__ == "__main__":
    print("직접 실행됨!")
# 직접 실행
python my_module.py
# → __name__ = __main__
# → 직접 실행됨!

# import
import my_module
# → __name__ = my_module
# → (if 블록 실행 안됨)

5. 핵심 정리

상황__name__if 블록 실행 여부
직접 실행 (python my_module.py)"__main__"실행됨
import (import my_module)"my_module"실행 안됨

한 줄 요약: if __name__ == "__main__"은 "이 파일을 직접 실행할 때만 아래 코드를 실행해라"라는 가드로, import 시 의도하지 않은 실행을 막아줍니다.

profile
ML Engineer 🧠 | AI 모델 개발과 최적화 경험을 기록하며 성장하는 개발자 🚀 The light that burns twice as bright burns half as long ✨

0개의 댓글