How import statement finds modules and packages!

sh_awtylol4·2022년 3월 6일
0

wecode 31기

목록 보기
12/24

Q1. sys.modules 와 sys.path의 차이점을 서술해 주세요.

  • sys.modules
    - 파이썬이 모듈이나 package를 찾기위해 가장 먼저 확인하는 곳.
    - sys.modules은 단순한 dictionary형태.
    - 이미 import된 모듈과 package를 저장하고 있음.
    - import가 되어있는 모듈과 패키지의 경로가 저장되어 있어 다시 찾지 않아도 된다.

  • sys.path
    -파이썬이 마지막으로 보는 곳.
    -sys.path는 기본적으로 list형태이며 string 요소들을 가지고 있는 list
    -각 list의 경로를 하나하나 확인하면서 해당 경로에 import하고자 하는 package가 위치해 있는지 확인함.

  • 정리

    import search 순서
    sys.modules -> built-in modules -> sys.path

파이썬은 import하고자 하는 모듈과 package를 찾을때에 먼저 sys.modules를 보고 없으면 파이썬 built-in 모듈들을 확인하고 마지막으로 sys.path에 지정되어 있는 경로들을 확인해서 찾음. sys.path 에서도 못찾으면 ModuleNotFoundError 에러를 리턴함.

Q2. sys 도 import 해야하는 모듈입니다. 파이썬은 sys 모듈의 위치를 어떻게 찾을 수 있을까요?

  • 파이썬에 포함되어 있는 내장 모듈이고 파이썬 설치시 기본적으로 내장 모듈에 대한 path정보가 default 값으로 지정되어있다. Sys 모듈도 python에 내장된 built-in 모듈중 하나이므로 경로 검색순서에 따라 쉽게 찾을 수 있다.

Q3.Absolute path와 relative path의 차이점을 서술해 주세요.

  • Absolute path
    - Absolute path는 최상단 디렉토리를 기준으로 path 설정.
    - Absolute path는 최상위루트부터 경로를 표시해야해서 경로를 길게 표시해야하는 단점이 있다.
  • Relative path
    - Relative path는 실행파일이 위치한 디렉토리를 기준으로 path를 설정.
    - Relative path는 선언해야 하는 경로의 길이를 줄여준다는 장점은 있지만 헷갈리기 쉽고, 파일의 위치가 변경되면 경로 위치도 변경되어야 한다는 단점이 있다. 그러므로 웬만한 경우에는 absolute path를 사용하는게 권장된다.

Q4.calculator 패키지 만들기

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

오류 해결 방법 : 상대 결로를 절대경로로 바꿔준다.

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

절대경로로 실행시 main.py에서 상대경로로 import시 발생했던 것과 같은 에러가 뜬다. 마찬가지로 main module인 add_and_multiply 모듈의 위치를 잡지 못해 발생하는 에러이다. 상대 경로로 다시 바꿔주면 실행이 된다.

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

init.py 파일은 해당 디렉터리가 패키지의 일부임을 알려주는 역할을 한다. 만약 game, sound, graphic 등 패키지에 포함된 디렉터리에 init.py 파일이 없다면 패키지로 인식되지 않는다.

profile
포기하는 그 순간이 바로 시합종료예요...

0개의 댓글