반응형
if __name__ == "__main__" 라는 것은 "여기서 부터가 메인입니다." 라고 선언하는 것이다.
이 이하에 작성된 구문이 메인 메서드에 포함되는 것이다. 하지만 이 메서드는 조금의 기능이 더 부가되어 있다. 다음의 예제로 위 메서드의 기능을 알아보자.
메인함수의 사용
서로 다른 모듈 AAA 와 BBB 를 생성한다. 그리고 BBB 에는 다음과 같이 작성 후 AAA 에서 from BBB import * 해준다.
1
2
3
4
5
6
|
# BBB 모듈
a = 5
print(a)
if __name__=="__main__":
print(a)
|
cs |
============ 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 할 경우 해당 구문을 실행하면 안될 때 위 메서드를 사용해줄 수 있다.
반응형
'Python' 카테고리의 다른 글
[Python 기초] 파이썬 - 연산자 오버로딩 (0) | 2021.04.08 |
---|---|
[Python 기초] 파이썬 - 쓰레드 (Thread) (0) | 2021.04.08 |
[Python 기초] 파이썬 자료형 - 집합(set) (0) | 2021.04.08 |
[Python 기초] 파이썬 random 모듈 - choice() , randint() , randrange() , sample() , shuffle() (0) | 2021.04.07 |
[Python 기초] 파이썬 클래스 - 클래스 멤버(static) 와 접근제어자(public , private , getter , setter) (0) | 2021.04.05 |
댓글