본문 바로가기
Python

[Python 기초] 파이썬 if __name__ == "__main__" 란?

by dev수니 2021. 4. 8.
반응형

 

 

if __name__ == "__main__" 라는 것은 "여기서 부터가 메인입니다." 라고 선언하는 것이다.

이 이하에 작성된 구문이 메인 메서드에 포함되는 것이다. 하지만 이 메서드는 조금의 기능이 더 부가되어 있다. 다음의 예제로 위 메서드의 기능을 알아보자.

 

 


메인함수의 사용

 

 

서로 다른 모듈 AAA 와 BBB 를 생성한다. 그리고 BBB 에는 다음과 같이 작성 후 AAA 에서 from BBB import * 해준다.

1
2
3
4
5
6
BBB 모듈
= 5
print(a)
 
if __name__=="__main__":
     print(a)
cs

 

1
2
3
4
5
AAA 모듈
# BBB모듈을 import
 
from BBB import *
 
cs

 

그리고 BBB와 AAA를 각각 F5로 실행시키면 다음과 같이 나타난다. 

============ RESTART: C:\pjs\Python\BBB.py =============
5
5
>>> 
============ RESTART: C:\pjs\Python\AAA.py =============
5
>>> 

 

BBB 모듈에서는 if __name__=="__main__": 이하의 print(a) 구문까지 출력이 되었지만 AAA 모듈에서는 출력되지 않은것이다. 분명히 import 해줌으로써 BBB 모듈내의 모든 것을 가져와줬는데 말이다.

 

 

이는 왜 그럴까?

 

 

먼저 if __name__=="__main__" 의 의미를 파악하자면 __name__ 에는 현재 위치한 모듈인 BBB 모듈이 들어가있다. 따라서 F5로 실행 시켰을때 BBB 모듈이 맞니? 라고 물어보게된다.

 

 

BBB 모듈에서 실행을 시키게 되면 __main__에 BBB모듈이 들어간다. 따라서 BBB모듈이 BBB모듈이 맞으므로 True 값이 되어 이하의 구문을 실행하게 되고,

AAA 모듈에서 실행을 시키게 되면 __main__ 에 AAA모듈이 들어가고 BBB모듈이 AAA모듈이 아니므로 False값이 되어서 이하의 구문이 실행되지 않는것이다. 

 

 

 

따라서 다른 모듈에서 import 할 경우 해당 구문을 실행하면 안될 때 위 메서드를 사용해줄 수 있다.

반응형

댓글