티스토리 뷰

travel 패키지의 thailand 와 vietnam 모듈은 내용이 간단하게 작성되어 있어서 크게 문제 되는 부분이 없었는데 실제로 모듈을 만들게 되면 규모나 복잡도에 따라 모듈 내 기능이 올바르게 동작하는지를 확인하는 작업이 반드시 필요합니다. 물론 지금까지 배웠던 것처럼 별도의 파일에서 해당 모듈을 import 해와서 테스트를 해볼 수도 있겠지만 모듈을 직접 실행하면서 확인하는 방법이 아무래도 수월하겠지요.

 

모듈이 직접 실행되는지, 아니면 별도의 파일에서 호출되어 실행되는지는 이렇게 구분할 수 있습니다. 이 때 __name__ 과 "__main__" 은 앞 뒤로 밑줄을 2번씩 적어주셔야 한다는 점 주의해주세요.

if __name__ == "__main__": # 직접 실행되는 경우
    pass
else: # 외부에서 호출되어 실행되는 경우
    pass

 

앞에서 만든 travel 패키지의 thailand.py 파일에서 ThailandPackage 클래스 정의부분 밑에 코드를 추가해보겠습니다. if 구문을 통해 __name__ 이 "__main__" 인 경우, 즉 이 모듈이 직접 실행되는 경우에는 출력문과 함께 ThailandPackage 객체를 만들어서 detail() 메소드를 호출하는 작업까지 해보겠습니다. else 구문에서는, 즉 모듈이 외부에서 호출되는 경우에는 외부에서 호출된다는 문구만 간략히 출력하도록 합니다.

class ThailandPackage:
    def detail(self):
        print("[태국 패키지 3박 5일] 방콕, 파타야 여행 (야시장 투어) 50만원")
        
if __name__ == "__main__": # 모듈 직접 실행
    print("Thailand 모듈을 직접 실행")
    print("이 문장은 모듈을 직접 실행할 때만 실행돼요")
    trip_to = ThailandPackage()
    trip_to.detail()
else: # 외부에서 모듈 호출
    print("Thailand 외부에서 모듈 호출")

 

먼저 모듈을 직접 실행할 때의 동작을 확인하기 위해 thailand.py 파일을 연 상태에서 실행 버튼을 클릭합니다. 출력 결과를 보면 if 조건에 해당하는 구문이 실행된 것을 확인할 수 있습니다.

Thailand 모듈을 직접 실행
이 문장은 모듈을 직접 실행할 때만 실행돼요
[태국 패키지 3박 5일] 방콕, 파타야 여행 (야시장 투어) 50만원

 

이번에는 앞 장에서 작성한 내용 그대로 practice.py 파일에서 thailand 모듈을 가져다 써보도록 하겠습니다.

from travel import *
trip_to = thailand.ThailandPackage()
trip_to.detail()

 

실행을 해보면 thailand 모듈 내에 정의된 else 구문의 문장이 실행되고 나서 detail() 메소드의 동작이 실행되는 것을 확인할 수 있습니다.

Thailand 외부에서 모듈 호출
[태국 패키지 3박 5일] 방콕, 파타야 여행 (야시장 투어) 50만원

 

이번 장에서 배운 if __name__ == "__main__": 구문을 잘 활용하면 모듈을 직접 실행하는지, 또는 외부에서 가져다 쓰는지를 구분하여 필요한 코드를 작성하실 수 있습니다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함