본문 바로가기

Python

[Python] 파이썬에서 if __name__ == "__main__" 의 의미

반응형

if __name__ == "__main__" 

 

파이썬 코드를 보다보면 위와 같은 조건문이 자주 등장하시는 것을 볼 수 있습니다. 위 조건문은 현재 코드가 프로그램의 진입점entry point 또는 메인 main 인지를 체크하는 부분입니다.


__name__ 변수

파이썬에서 제공하는 __name__ 변수는 모듈의 이름을 출력해줍니다. 하지만 현재 코드가 프로그램의 진입점 entry point 인 경우에는 __main__이라는 값을 가지게 됩니다. 한번 코드를 통해 확인해봅시다.

# main.py 
import external_module 
print("It's main.py") 
print(__name__) 


#external_module.py 
print("It's external_module.py") 
print(__name__) 



__name__ 변수 활용하기

앞서 __name__ 변수를 활용하면 실행되는 모듈의 이름과 엔트리 포인트의 여부를 알 수 있다고 했습니다. 이 정보를 통해서 할 수 있는 것은 대표적으로 엔트리 포인트에서만 특정 코드를 실행하는 경우입니다. 

# main.py 
import external_module 
print(square(10) 




#external_module.py 
def square(n): 
	return n*n 

print("square(10) :" + square(10)) 


external_module 부분에 square 함수의 사용법을 출력하는 코드가 있을때 이를 main에서 활용하면 해당 코드도 함께 출력됩니다. 하지만 external_module을 모듈로 사용하는 사람들이 해당 모듈을 사용할때도 해당 코드는 계속 동작하게 됩니다.

그러므로 해당 코드를 모듈로서 사용하지 않을때, 즉 main 함수로 사용할 떄만 해당 코드를 출력하게 만듭니다.

#external_module.py 
def square(n): 
	return n*n 

if __name__ == "__main__": 
	print("square(10) :" + square(10))


다시 main.py를 실행하면 해당 코드가 출력되지 않는 것을 알 수 있습니다. 이렇듯 __name__ 변수는 프로그램의 진입점을 파악하는데 자주 사용하는 변수이므로 꼭 알아두시면 좋겠습니다.

반응형