파이썬 모듈과 패키지패키지패키지 사용하기

Q

패키지 통째로 import시 함수 호출이 됩니다

조회 641

좋아요 0

2023년 10월 1일




A
2개의 답변이 있어요
질문자 채택



2023년 10월 3일

댓글 3

2023년 10월 4일
from shapes.area import square에서 'square'만 가져오는 게 아니고 'from shapes.area'가 중점이여서 area모듈이 다 가져와지는 거였나 보군요..! 이제 궁금증이 풀린 것 같습니다 너무너무 감사드립니다!!!
2023년 10월 4일
from shapes.are import square만 사용하면 square만 가져오는 게 맞습니다. 이 상태에선 shapes.area.circle(2) 를 실행하면 실행이 되지 않습니다. 그런데 from shapes.area import square 이후 import shapes를 하게 되면 shapes 하위의 모듈을 다 가져오는 것으로 확인됩니다. 저도 답변 달아주신 것처럼 from shapes.area를 하면 다 가져와지는 걸까 싶었는데그건 아니었고 이후 import shapes와 같이 더 상위 모듈을 가져왔을 때 이미 가져왔던 하위 모듈의 전부를 가져오는 것처럼 보였습니다. 이게 깔끔하게 정리되지 않는 것은 조금 꼬여있기 상황이기 때문이라고 생각합니다. shapes/__init__.py에 조금 더 명확하게 정의하시면서 정리해보시면 좋겠습니다.
2023년 10월 6일
자세히 설명해주셔서 정말 감사합니다!!



2023년 10월 1일

댓글 5

2023년 10월 1일
__init__ 에는 아무 것도 없습니다ㅠㅠ
2023년 10월 2일
__init__에 아무것도 없어서 그럼 문제가 되었을 겁니다. import shape이라고 하면 shape은 .py파일이 아니기 때문에 __init__.py 파일을 접근하게 됩니다. 그런데 __init__.py 파일 안에 area.py나 volume.py가 import되어 있지 않기 때문에 import shape만으로 shape.area 또는 shape.volume은 불가능 합니다.shape/__init__.py에 import area과 import volume을 해보세요.
2023년 10월 3일
아직 __init__ 활용법에 대해 나오지 않은 강의 였고, '__init__에 import문을 써주지 않았기 때문에 import shapes 만 한 경우 shape.area.circle이 안 될거다' 라는 걸 설명해주는 부분이었습니다
2023년 10월 3일
근데 저는 위에 보시다 싶이 import shpaes만 했는데 shapes.area.circle이 호출되었고 이에 대해 왜 정상작동한 건지 궁금합니다!
2023년 10월 3일
내용이 길어질 것 같아 새로운 답변으로 작성해볼게요!

(주) 코드잇

대표강영훈

개인정보보호책임자강영훈

이메일support@codeit.kr

사업자 번호313-86-00797

통신판매업제 2019-서울중구-1034 호

주소서울특별시 중구 청계천로 100 시그니쳐타워 동관 10층 코드잇