본문 바로가기

IT/[Python]

[Python]__name__ 과 '__main__' ??

728x90
반응형

다른 사람들이 작성한 소스코드를 열어볼 때

if __name__ == '__main__':

과 같은 문법을 자주 접하셨을겁니다.

 

어떤 의미를 갖고 있는 문법인지 알아보겠습니다.

 

 

__name__

일반적으로 파이썬 스크립트 파일인 py파일은 파일의 이름 자체를 모듈 이름으로 사용합니다.

if __name__ == '__main__':   

결국 위의 if문에서 판단하는 것은 모듈로 사용되는지 직접 실행되는지를 판단하는 조건문입니다.

 

- 스크립트 프로그램이 직접 실행될 때 변수 __name__은 '__main__'입니다.

- 스크립트 프로그램이 임포트될 때 변수 __name__은 원래의 모듈 이름입니다.

 

 

hello.py와 main.py를 작성하여 확인해보겠습니다.

 

hello.py를 직접 실행했을 때

print('hello 모듈 시작')
print('hello.py __name__:', __name__)    # __name__ 변수 출력
print('hello 모듈 끝')

hello 모듈 시작
hello.py __name__: __main__
hello 모듈 끝

hello.py 파일을 직접 실행했을 때

hello.py 파일을 직접 실행했을 때 __name__ 변수가 __main__으로 출력되는 것을 확인할 수 있습니다.

 

main.py을 직접 실행했을 때

import hello    # hello 모듈을 가져옴
 
print('main.py __name__:', __name__)    # __name__ 변수 출력

hello 모듈 시작
hello.py __name__: hello                # 모듈이름을 출력
hello 모듈 끝
main.py __name__: __main__              #  __main__출력

hello.py를 모듈로 가져왔을 때

main.py에서 hello.py를 임포트 시켰을때 __name__ : hello 로 출력되는 것을 확인했습니다.

py 파일을 작성할 때는 직접 실행할 지 모듈을 임포트할 지 고려하여

if __name__ == '__main__': 구문을 사용하여야겠다.

 

 

참조 : https://dojang.io/mod/page/view.php?id=2448

반응형