일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- list
- 파이썬
- ai 전문가 과정
- 정처기
- 데이터분석
- 백준
- AI학습
- 클래스
- git
- github
- 코딩테스트
- KT
- numpy
- 코딩
- 정처기 실기
- 모각코
- AI 윤리
- pandas
- Python
- KT AIVLE
- 데이터
- 자바
- 인공지능
- AIVLE
- 데이터과학
- Ai
- dictionary
- 알고리즘
- LG Aimers
- Java
- Today
- Total
무향향수
[Python] if __name__ == "__main__" 의미 본문
파이썬 코드를 살펴보면
if __name__ == "__main__":
# ...
대부분 위와 같은 형식으로 코드가 작성되어 있는 것을 확인할 수 있다.
처음에는 python에서는 메인 함수를 저런 식으로 호출하나보다 하고 그냥 넘기고 잘 사용하지 않았다.
그러나 인턴 업무를 하며 코드를 하나씩 이해하던 도중 자주 발견 되어 제대로 알고 사용하고자 정보를 찾아보았다.
코드의 역할 !
우선 해당 코드의 역할은 크게 두 가지가 있다.
1. 모듈과 스크립트 구분 📏
파이썬에서는 코드가 *모듈로 임포트될 때와 *스크립트로 직접 실행될 때 서로 다른 방식으로 실행된다.
여기서 __name__ 은 현재 모듈의 이름을 나타내는 변수이다.
만약 스크립트가 직접 실행되면 __name__ 값은 "__main__"이 된다.
그러나 다른 모듈에서 임포트될 경우 __name__은 해당 모듈의 이름이 된다.
예시) 만약 파이썬 스크립트(test.py)를 직접 실행하면 __name__의 값은 "__main__"이 된다.
그러나 이 스크립트를 다른 모듈(another.py)에서 임포트하면 __name__값은 해당 모듈의 이름, 즉 "test"가 된다!
모듈(module): 하나의 파이썬 파일(.py파일), 스크립트 또는 다른 모듈에 import 되는 프로그램 파일 (함수, 클래스, 변수 정의)
예) math, os, sys와 같은 표준 라이브러리 모듈이나 사용자가 만든 사용자 정의 모듈이 있다.
스크립트(script): 특정 작업을 수행하기 위해 작성된 파이썬 코드(.py). 일회성 작업, 자동화 프로세스에 사용된다.
-> 모듈은 스크립트와 달리 단독으로 실행은 불가능하다는 차이점이 있다.
속성 | 모듈(module) | 스크립트(script) |
목적 | 기능 재사용 | 특정 작업 수행 |
사용 | import로 다른 코드에서 사용 | 직접 실행 가능 |
구성 | 함수, 클래스, 변수 포함 | 주로 실행 로직 포함 |
진입점 | 없음 | if __name__ == "__main__": 사용 |
2. 조건문 역할 🤷
if __name__ == "__main__":
조건문은 스크립트가 직접 실행될 때만 그 안에서 코드를 실행하게 한다.
따라서 다른 모듈에서 이 스크립트를 임포트해도 if __name__ == "__main__": 아래의 코드는 실행되지 않는다.
왜 사용할까?
1. 재사용성 🗑️
다른 스크립트에서 이 모듈을 임포트하여 사용할 때, 메인 블록에 있는 코드는 실행되지 않으므로 이 모듈의 함수나 클래스를 안전하게 사용할 수 있다.
2. 테스트 용이성 😎
모듈이 다른 모듈에서 사용될 때와 독립적으로 실행될 때의 동작을 명확하게 구분할 수 있다. 이를 통해 테스트와 디버깅이 쉬워진다.
3. 코드의 명확성 ✨
스크립트가 직접 실행될 때 어떤 동작이 수행될지를 명시적으로 보여주므로 코드의 가독성이 향상된다.
사용 예시 💫
이 스크립트를 실행하면 main함수 내용과 "이 스크립트가 직접 실행되었습니다." 문장이 출력된다.
# test_main.py
def main():
print("안녕하세용!")
if __name__ == "__main__":
main()
print("이 스크립트에서 직접 실행되었습니다.")
한편 다른 모듈에서 test_main.py를 import 후 test_main.main() 함수를 실행하면
main함수의 내용만 출력된다.
# test_import.py
import test_main
print(test_main.main())
이제 if __name__ == "__main__": 의기능과 사용방법을 알게 되었으니 잘 사용하면 되겠다~!
'인턴일기 > 공부내용' 카테고리의 다른 글
[서버] SSH 접속 방법 정리 (0) | 2024.10.31 |
---|---|
[git] Github Issues 사용하기 (2) | 2024.09.20 |
[AWS] S3 코랩 연동 (1) | 2024.09.19 |
[Data] 원시데이터 원천데이터 라벨링데이터 차이점 (0) | 2024.09.11 |
[CS] 멀티스레드(Multithread)와 멀티프로세스(Multiprocess) (1) | 2024.09.11 |