[Python] 파이썬 __name__ == ‘__main__’의 사용 목적
파이참(PyCharm) 툴에서 프로젝트 생성시 아래와 같은 main.py 샘플 스크립트를 함께 생성할 수 있습니다. 아래 코드 스니펫을 보면 if절 조건문에 __name__ == ‘__main__’ 와 같은 조건이 있습니다.
# This is a sample Python script.
# Press Shift+F10 to execute it or replace it with your code.
# Press Double Shift to search everywhere for classes, files, tool windows, actions, and settings.
def print_hi(name):
# Use a breakpoint in the code line below to debug your script.
print(f'Hi, {name}') # Press Ctrl+F8 to toggle the breakpoint.
# Press the green button in the gutter to run the script.
if __name__ == '__main__':
print_hi('PyCharm')
# See PyCharm help at https://www.jetbrains.com/help/pycharm/
파이썬 __name__ 변수는 모듈의 이름을 출력합니다. 즉 실행되는 모듈의 이름이 저장되는 변수이며import로 모듈을 가져왔을 때 모듈의 이름이 들어갑니다. 파이썬 인터프리터(interpreter)로 스크립트 파일을 직접 실행했을 때는 모듈의 이름이 아니라 ‘__main__’이 들어갑니다. 이해를 돕기 위해 아래 코드를 참고해볼까요?
custompackage패키지를 하나 만들었습니다. 그리고 이 패키지 안에 calclulator.py 모듈과 autoprint.py모듈을 추가하였습니다. 그리고 main.py 모듈에서 custompackage패키지에 추가된 모듈 2개를 import 한 후 실행해보았습니다.
#calclulator.py
def calplus(a, b):
return a + b
def calminus(a, b):
return a - b
if __name__ == '__main__':
print("calculator.py 직접 실행됨 : __name__ ->", __name__)
else:
print("calculator.py import로 호출됨 : __name__ ->", __name__)
#autoprint.py
def print_name():
print("autoprint.print_name(): __name__ ->", __name__)
#main.py
import custompackage.autoprint
import custompackage.calculator
def print_hi(name):
print(f'Hi, {name}')
if __name__ == '__main__':
print("main.py 직접 실행됨 : __name__ ->", __name__)
else:
print("main.py import로 호출됨 : __name__ ->", __name__)
a = 10
b = 20
custompackage.calculator.calplus(a, b)
custompackage.autoprint.print_name()
[main.py 실행결과]
C:UsersilikeAppDataLocalProgramsPythonPython39python.exe C:/python/Workspace/main.py
calculator.py import로 호출됨 : __name__ -> custompackage.calculator
main.py 직접 실행됨 : __name__ -> __main__
calclulator.calplus: __name__ -> custompackage.calculator
autoprint.print_name(): __name__ -> custompackage.autoprint
이제 좀 감이 오시나요??
calculator.py를 import가 아닌 직접 실행을 해보겠습니다.
C:UsersilikeAppDataLocalProgramsPythonPython39python.exe C:/python/Workspace/custompackage/calculator.py
calculator.py 직접 실행됨 : __name__ -> __main__
이제 확실히 이해가 되시죠??
파이썬은 최초로 시작하는 스크립트 파일과 모듈의 차이가 없습니다. 어떤 스크립트 파일이든 시작점도 될 수 있고, 모듈도 될 수 있습니다. 그래서__name__변수를 통해 현재 스크립트 파일이 시작점인지 모듈인지 판단합니다.
if __name__ == ‘__main__’와 같은 조건을 사용하는 이유는 스크립트 파일이 메인 프로그램으로 사용될 때와 모듈로 사용될 때를 구분하기 위한 용도입니다.
[REFERENCE]
dojang.io/mod/page/view.php?id=2448
[좀 더 알아보기]
[파이썬 더 알아보기]
[프로그래밍/Python] – [Python] 파이썬 패키지(Package), 모듈(Module) 개념 및 예제 : 패키지, 모듈을 만들고 불러오기(import)
[프로그래밍/Python] – [Python] 파이썬에서 웹브라우저(url) 호출하는 방법 : webbrower, selenium
[프로그래밍/Python] – [Python] 파이썬 기본 프롬프트(>>>) 변경하기 : 명령 프롬프트에서 파이썬 실행하는 방법(.py)
[프로그래밍/Python] – [Python] 파이썬 클래스(class) 와 생성자(__init__) 사용방법 및 예제 총정리
[프로그래밍/Python] – [Python] 파이썬 list, tuple, dictionary,set 예제 및 총정리
[프로그래밍/Python] – [Python] 파이썬 기본(기초) 문법 : 예제 및 총정리