2023. 3. 15. 01:43ㆍ독서
안녕하세요!
<코딩 자율학습 나도코딩의 파이썬 입문> 멘토를 담당하게 된 이안입니다.
오늘은 11장 '모듈과 패키지'에 대해 이어서 학습할게요.
오늘 공부할 내용은 다음과 같습니다.
🧐 공부할 내용(p.363~368)
- 모듈 공개 설정하기: __all__
- 모듈 직접 실행하기
1. 모듈 공개 설정하기: __all__
제가 포스팅한 이전 글을 보시면 __init__.py 파일을 활용해서 객체를 미리 생성한 뒤
다른 파일에서 가져다 쓰는 방법을 소개해드렸어요.
p.363에 소개하는 것 역시 비슷한 맥락입니다.
vietnam이라는 모듈을 변수로 사용하는 것이죠.
from travel import *
trip_to = vietnam.VietnamPackage()
trip_to.detail()
이 코드가 에러가 나는 이유는 vietnam이 정의되지 않아서 그렇습니다.
우리는 vietnam이라는 모듈을 변수 그 자체로 사용하고 싶습니다.
인스턴스가 아니라 모듈 그 자체를요.
이때 필요한 것이 바로 __all__ 입니다.
__all__ = ["vietnam", "thailand"]
이렇게 코드를 작성하기만 하면 vietnam이라는 모듈을 변수로 사용할 수 있습니다.
그렇기 때문에
trip_to = vietnam.VietnamPackage()
trip_to.detail()
이 코드가 가능한 것이죠.
첫 번째 코드는 vietnam이라는 모듈의 클래스의 인스턴스를 trip_to에 할당합니다.
두 번째 코드는 인스턴스의 detail()이라는 메서드를 사용하는 것입니다.
모두 모듈을 변수로 가져와서 사용할 수 있기 때문에 가능한 일이죠.
당연한 얘기겠지만, 변수명과 모듈명은 같아야 합니다.
vietnam.py이라는 파일을 모듈로 사용하기 위해서 이렇게 하면 안 됩니다.
__all__ = ["vietnam_module"] # 동작하지 않음
2. 모듈 직접 실행하기
모듈 직접 실행은 테스트에서 많이 사용되곤 합니다.
모듈 하나만을 따로 실행해서 테스트하는 것이 더 쉽기 때문이죠.
한번 예제 코드를 같이 볼까요?
class ThailandPackage:
def detail(self):
print("[태국 3박 5일 패키지] 방콕, 파타야 여행(야시장 투어) 50만원")
if __name__ == "__main__":
print("thailand 모듈을 직접 실행")
print("이 문장은 모듈을 직접 실행할 때만 실행돼요.")
trip_to = ThailandPackage()
trip_to.detail()
else:
print("thailand 외부에서 모듈 호출")
이 코드를 외부에서 호출하지 않고 다음 명령어를 사용해 보세요.
터미널을 열고 아래 명령을 입력하세요.
python3 ch11.py
그럼 직접 실행 문장이 출력될 것입니다.
반면 import 해서 출력하는 것은 실행결과가 달라집니다.
아래에 __name__의 역할에 대한 문서를 첨부할게요 :)
이번 시간에는 모듈에 대해서 알아봤어요
공부하시다 궁금하신 점이 있다면 댓글 남겨주세요~
✅ 정리
* 모듈 공개 설정하기
* 모듈 직접 실행하기
'독서' 카테고리의 다른 글
(나도코딩의 파이썬 입문) 11장. 모듈과 패키지(p.382~395) (1) | 2023.03.17 |
---|---|
(나도코딩의 파이썬 입문) 11장. 모듈과 패키지(p.369~381) (1) | 2023.03.16 |
(나도코딩의 파이썬 입문) 11장. 모듈과 패키지(p.353~362) (0) | 2023.03.14 |
(나도코딩의 파이썬 입문) 10장. 예외 처리(p.338~345) (0) | 2023.03.13 |
(나도코딩의 파이썬 입문) 10장. 예외 처리(p.326~337) (0) | 2023.03.10 |