sys.modules 와 sys.path의 차이점을 서술해 주세요.
sys.modules과 sys.path는 파이썬이 모듈이나 package를 찾을 때 확인하는 곳이다. 찾는 순서로는 sys.modules, built-in modules, sys.path 순서이다.
sys.modules는 dictionary로 이미 import된 모듈과 package를 저장하고 있다. 즉 전에 import된 것을 저장하고 있기 때문에 새롭게 import된 모듈은 sys.modules에서 찾을 수 없다.
sys.path는 마지막으로 보는 장소로 string 요소들을 가진 list로 이루어져 있다. 각각의 요소들은 경로를 나타내고 파이썬은 모듈을 찾을 때 해당 경로를 하나하나 확인하면서 import하고자 하는 module이나 package가 있는지 확인한다.
즉 차이점으로는 자료구조가 dictionary인지 list인지, 찾는 순서의 차이, 담고 있는 것이 직접 모듈이나 패키지인지 모듈이나 패키지를 찾을 수 있는 경로인지에 대한 차이가 있다.
sys 도 import 해야하는 모듈입니다. 파이썬은 sys 모듈의 위치를 어떻게 찾을 수 있을까요?
Absolute path와 relative path의 차이점을 서술해 주세요.
절대 경로와 상대 경로의 차이점.
절대 경로는 최상위 디렉토리에서부터 순차적으로 하나하나 경로를 지정해 주는 것이다. 경로가 길어질 수 있다는 단점이 있지만 경로에 위치한 모듈이나 패키지를 옮기지 않는 한 현재 파일의 위치가 바뀌어도 경로를 새로 지정해주지 않아도 된다.
상대 경로는 현재 위치한 디렉토리를 기준으로 경로를 지정한다. 헷갈릴 수 있는 위험이 있으며 현재 파일의 위치가 변경되게 되면 경로도 수정해주어야 하는 수고를 감내해야한다. 절대 경로를 추천한다고 한다.
calculator 패키지 만들기

main.py에서 상대경로로 add_and_mutiply 를 임포트 했을 때 발생하는 에러를 확인하고
다음의 파이썬 공식 문서를 참고해서 main module에서는 패키지의 모듈을 어떻게 임포트 해야하는지 블로깅 해주세요.


add_and_multiply.py에서 multiply함수를 절대경로와 상대경로도 각각 임포트 해보고 main 모듈과 차이점을 생각해보고 결과를 출력해 보세요.

__init__.py 파일의 역할에 대해서도 정리해서 블로깅 해주세요.