알아가기/Python

[Python] __name__ 을 프린트 해보자

XEV 2022. 10. 10. 20:53

__name__ == "__main__" 에 대해 알아보기 위해 __name__ 을 프린트해본다.

 

 

프린트 __name__

기본적으로 __name__ 을 프린트 문으로 출력해보면 __main__ 이 출력된다.

 

 

다음으로 if __name__ == "__main__": 로 감싼 후 프린트해보면 동일하게 __main__ 출력되어 나온다.

if 문이 정상적으로 동작했음을 알 수 있다.

 

 

 

두 개로 분리된 파일에서의 __name__

# mainfile.py

import funcfile

print(funcfile.fnHello("MAIN"))

print(f'PRINT __name__ from mainfile: {__name__}')
# funcfile.py

def fnHello(inputname):
    return f'Hello!!! {inputname}'

if __name__ == "__main__":
    print(fnHello('FUNCTION'))

print(f'PRINT __name__ from funcfile: {__name__}')

두 개의 파일 mainfile.py 와 funcfile.py 를 작성하였다.

mainfile.py 에는 funcfile.py 가 import 되어 있어 외부 함수 접근이 가능하다.

 

 

 

이제 먼저 funcfile.py 를 독립 실행해보았다.

 

출력으로

Hello!!! FUNCTION
PRINT __name__ from funcfile: __main__

가 나왔다.

 

함수 fnHello 가 입력을 받은 값으로 Hello!!! FUNCTION 를 프린트해 주었고, __name__ 에 대해서는 __main__ 을 결과로 내보내 주었다.

if __name__ == "__main__": 가 참이기에 funcfile.py 안의 print(fnHello('FUNCTION')) 는 정상적으로 작동되었다.

 

 

다음으로 mainfile.py 를 독립 실행해 본다.

 

출력 결과로

PRINT __name__ from funcfile: funcfile
Hello!!! MAIN
PRINT __name__ from mainfile: __main__

가 나왔다.

 

import 되어있는 funcfile 로 인해 외부 함수를 불러오고, 원하는 입력 변수를 적용하여 Hello!!! MAIN 이 프린트되었음을 알 수 있다.

이때, mainfile.py 에 있는 __name__ 출력은 __main__ 으로

funcfile.py 에 있는 __name__ 출력은 funcfile 로 나왔다.

funcfile.py 안의 if __name__ == "__main__": 는 거짓이기에 그에 대한 print(fnHello('FUNCTION')) 는 실행되지 않았음을 알 수 있다.

 

 

결과에서 보여주듯 기본적으로 실행되어지는 파일에서 __name__ 은 __main__ 으로 설정된다.

이와 달리 외부에서 불려져 오는 파일에서 __name__ 은 그 파일의 이름으로 설정된다.