반응형
if __name__ == "__main__": 총정리
- 이 구조는 스크립트가 직접 실행될 때와 모듈로서 다른 스크립트에 의해 임포트될 때의 동작을 구분하는 데 사용됩니다.
[__name__ 변수]
- __name__은 파이썬에서 특별한 내장 변수입니다.
- 파이썬 파일이 실행될 때, 인터프리터는 이 파일을 하나의 모듈로 취급하고, 그 모듈의 이름을 __name__ 변수에 할당합니다.
[직접 실행 vs. 임포트]
- 스크립트가 직접 실행될 때, __name__ 변수는 "__main__"으로 설정됩니다.
- 다른 모듈에서 임포트될 때는 __name__ 변수는 그 모듈의 이름이 됩니다.
[예제 코드]
def main():
print("This is the main function.")
if __name__ == "__main__":
main()
- 직접 실행될 때:
- 파일이 직접 실행되면, __name__은 "__main__"으로 설정됩니다.
- 따라서 if __name__ == "__main__": 블록 내의 코드가 실행됩니다.
- 출력: This is the main function.
- 다른 모듈에 의해 임포트될 때:
- 파일이 다른 모듈에 의해 임포트되면, __name__은 그 모듈의 파일 이름(확장자 제외)이 됩니다.
- 이 경우 if __name__ == "__main__": 블록 내의 코드는 실행되지 않습니다.
- 즉, main() 함수는 실행되지 않습니다.
[사용 이유]
- 모듈 재사용성:
- 이 구조를 사용하면 파일을 독립적으로 실행할 수 있을 뿐만 아니라, 다른 파일에서 모듈로 임포트하여 함수와 클래스를 재사용할 수 있습니다.
- 테스트 및 디버깅:
- 스크립트를 직접 실행하여 독립적으로 테스트하고 디버깅할 수 있습니다.
[더 복잡한 예제]
def foo():
print("This is the foo function.")
def main():
print("This is the main function.")
foo()
if __name__ == "__main__":
main()
- 파일이 직접 실행될 때:
- main() 함수가 실행되고, 그 안에서 foo() 함수가 호출됩니다.
- 출력: This is the main function., This is the foo function.
- 파일이 임포트될 때:
- main() 함수와 foo() 함수는 정의되지만, 자동으로 실행되지는 않습니다.
- 다른 스크립트에서 이 함수를 호출할 수 있습니다.
# 다른 파일에서 임포트하는 예제
import example_module # 예제 파일이 example_module.py 라고 가정
example_module.foo() # 출력: This is the foo function.
- 다른 파일에서 임포트하는 예제
반응형
'개발 > Python' 카테고리의 다른 글
[파이썬, Python] 디버깅 예시 총정리 (3) | 2024.07.15 |
---|---|
[파이썬, Python] 코드 최적화 예시 총정리 (2) | 2024.07.14 |
[파이썬, Python] 터미널 명령어 실행하기 (0) | 2024.07.12 |
[파이썬, Python] 패키지 __init__.py 활용법 총정리 (0) | 2024.07.12 |
[파이썬, Python] 패키지 활용법 총정리 (0) | 2024.07.11 |