Python

[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] – [Python] 파이썬 패키지(Package), 모듈(Module) 개념 및 예제 : 패키지, 모듈을 만들고 불러오기(import)

[프로그래밍/Python] – [Python] 파이썬 난수 발생(random) 예제 총정리 : randit(), randrange(), uniform(), shuffle(), choice(), choices(), simple()

[프로그래밍/Python] – [Python] 파이썬에서 웹브라우저(url) 호출하는 방법 : webbrower, selenium

[프로그래밍/Python] – [Python] 파이썬 기본 프롬프트(>>>) 변경하기 : 명령 프롬프트에서 파이썬 실행하는 방법(.py)

[프로그래밍/Python] – [Python] 파이썬 클래스(class) 와 생성자(__init__) 사용방법 및 예제 총정리

[프로그래밍/Python] – [Python] 파이썬 list, tuple, dictionary,set 예제 및 총정리

[프로그래밍/Python] – [Python] 파이썬 문자열 함수 사용 예제 및 총정리 : split,join,replace,rstrip,lstrip,lower,upper,index,count,len

[프로그래밍/Python] – [Python] 파이썬 기본(기초) 문법 : 예제 및 총정리

 

Leave a Reply

error: Content is protected !!