| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
- STL
- 연산자오버로딩
- 참조자
- python
- 얕은복사
- c++코딩테스트합격자되기
- 백준
- 11382번
- C++
- 제네릭프로그래밍
- 코딩테스트
- 점프투파이썬
- 상속
- 프로그래머스lv2
- 코드잇
- 포인터
- OOP
- OpenCV
- 동적바인딩
- 데이터사이언스
- 유도클래스
- 주피터
- 스택
- 깊은복사
- 멤버함수로구현
- 다형성
- list comprehension
- 인프런
- 람다식
- 기본클래스
- Today
- Total
WjExplor Story
if __name__ == "__main__" 정리 본문
## 1. `__name__` 이란 무엇일까?
파이썬에서 `__name__`은 특별한 내장 변수입니다. 파이썬 인터프리터가 코드를 실행할 때 자동으로 이 변수에 값을 할당해 줍니다. 이 값은 파이썬 파일(.py)이 어떻게 사용되느냐에 따라 달라집니다.
- 직접 실행될 때: 해당 파일을 터미널에서 `python my_script.py` 와 같이 직접 실행하면, 그 파일 안에서 `__name__` 변수의 값은 `"__main__"` 이라는 문자열이 됩니다.
- 모듈로서 가져올 때(import): 다른 파이썬 파일에서 `import my_script` 와 같이 모듈로 가져와서 사용하면, `my_script.py` 파일 안에서 `__name__` 변수의 값은 그 파일의 이름인 `"my_script"` 가 됩니다.
## 2. `if __name__ == "__main__"` 의 역할
이 조건문은 **"이 파이썬 파일이 터미널에서 직접 실행되었을 때만, 이 블록 안의 코드를 실행하라"** 라는 의미입니다.
다른 파일에서 모듈로 가져와서 사용할 때는 이 조건문이 거짓(False)이 되므로, 블록 안의 코드는 실행되지 않습니다.
### 왜 사용할까?
이 구문은 주로 두 가지 목적으로 사용됩니다.
1. **모듈 테스트용 코드 작성**: 내가 만든 모듈(함수나 클래스 등)이 잘 작동하는지 테스트하는 코드를 작성할 때 유용합니다. 이 테스트 코드는 모듈이 다른 곳에서 `import` 될 때는 실행되지 않아야 합니다.
2. **프로그램의 시작점(Entry Point) 지정**: 여러 파일로 구성된 프로젝트에서, 어떤 파일이 메인 프로그램으로서 실행되어야 하는지를 명확하게 나타냅니다.
## 3. 예시 코드로 이해하기
두 개의 파이썬 파일을 만들어 직접 확인해 보겠습니다.
`my_module.py` 파일:
(함수를 가지고 있으며, 자체적으로 테스트 코드도 포함하는 모듈)
# my_module.py
def greet(name):
"""입력받은 이름에게 인사하는 함수"""
print(f"안녕하세요, {name}님!")
print(f"my_module.py의 __name__ 변수 값: {__name__}")
print(__name__)
# 이 파일이 직접 실행될 때만 아래 코드가 동작합니다.
if __name__ == "__main__":
print("my_module.py 파일을 직접 실행했습니다.")
print("모듈 테스트를 시작합니다.")
greet("파이썬")
'main_program.py' 파일 :
(`my_module.py`를 가져와서 사용하는 메인 프로그램 )
# main_program.py
# my_module을 임포트합니다.
# 이 때 my_module.py 안에 있는 코드들이 한 번 실행됩니다.
import my_module
print(__name__)
print(f"main_program.py의 __name__ 변수 값: {__name__}")
print("\nmain_program.py에서 my_module의 함수를 호출합니다.")
my_module.greet("사용자")
### 실행 결과 확인
`my_module.py`를 직접 실행할 경우:
터미널에 `python my_module.py`를 입력하면 다음과 같은 결과가 나옵니다.
```
__main__
my_module.py의 __name__ 변수 값: __main__
my_module.py 파일을 직접 실행했습니다.
모듈 테스트를 시작합니다.
안녕하세요, 파이썬님!
```
`__name__`이 `__main__`이므로 `if` 블록 안의 코드가 실행되었습니다.
`main_program.py`를 실행할 경우:**
터미널에 `python main_program.py`를 입력하면 다음과 같은 결과가 나옵니다.
```
my_module
my_module.py의 __name__ 변수 값: my_module
main_program.py의 __name__ 변수 값: __main__
main_program.py에서 my_module의 함수를 호출합니다.
안녕하세요, 사용자님!
```
`main_program.py`를 실행하면, `import my_module` 라인에서 `my_module.py` 코드가 실행됩니다. 이때 `my_module.py` 안의 `__name__` 변수는 `my_module`이므로, `if` 블록 안의 코드는 실행되지 않습니다.
이처럼 `if __name__ == "__main__"` 구문을 사용하면 모듈의 재사용성을 높이고 코드를 더 깔끔하게 구성할 수 있습니다.
'Python > Python : Code Study' 카테고리의 다른 글
| 자릿수 합 구하기 (0) | 2025.09.15 |
|---|---|
| PYTHONPATH 환경 변수 (0) | 2025.09.14 |
| 파스칼 케이스(PascalCase) 표기법 (0) | 2025.09.12 |
| [점프 투 파이썬] 4장 파이썬의 입출력 되새김 문제 Q1 ~ Q8 (1) | 2025.09.12 |
| 리스트 컴프리헨션(List Comprehension) (0) | 2025.09.11 |