[TIL][Repl.it]52. modules 과제

yejin20·2020년 9월 26일
0

TIL

목록 보기
22/30
post-thumbnail
  1. sys.modules 와 sys.path의 차이점을 서술해 주세요.

sys.modules은 파이썬이 모듈이나 패키지를 찾을 때 가장 먼저 확인하는 곳으로 단순한 dictionary 형태며, 이미 import된 module과 package를 저장해놓는다.
sys.path는 파이썬이 sys.modules 혹은 built-in modules에도 없을 때 마지막으로 찾는 곳이며 string요소를 가진 list 형태다.

| sys.modules | sys.path |
|:----------:|:----------:|
| 단순한 dictionary 형태 | 기본적으로 string 요소들을 가진 list 형태 |
| 파이썬이 모듈, 패키지 찾을 때 가장 먼저 확인하는 곳 | 마지막으로 확인하는 곳 |
| 이미 import 된 module과 package 저장 | |



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

sys는 파이썬에 포함되어 있는 모듈로 sys 모듈을 import 해서 sys.modules와 sys.path 를 출력, 수정이 가능하다.



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

Absolute path는 절대적인 경로로 import 하는 파일이나 경로에 상관없이 항상 프로젝트 가장 최상위 디렉토리에서 시작한다. 때문에 항상 경로가 동일하다.

Relative path는 상대적인 경로로 import 하는 위치를 기준으로 경로를 정의한다. absolute path는 경로가 길어질 수 있다는 단점을 보완할 수 있지만, 파일 위치가 변경되면 경로 위치가 변경되어야 하는 단점이 있다.


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

ImportError : attempted relative import with no known parent package

기본 모듈로 사용하려는 모듈은 항상 절대 경로를 사용해야한다는 python 공식 문서의 말에 따라,

상대 경로를 절대 경로로 바꿔서 사용했다.

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

현재 스크립트 파일이 실행되는 상태를 파악하기 위해서

add_and_multiply.py에 print(f"add_and_multiply: {_name __}")을,


main.py에는 print(f"main.py: {_ _ name _ _}")을 추가했다.

실행한 결과,

main.py: _ _ _ main _ _ _ 이 표시되었다. main.py가 메인 파일로 사용되었다는 뜻이며, 메인 파일이라면 package나 module을 절대경로로 불러와야 하지만 메인 파일이 아니면 절대 경로이든, 상대경로든 상관없기 때문에 절대 경로를 썼을 때와 상대 경로를 썼을 때 둘 다 상관없이 실행이 되었던 것이다!



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

파이썬이 디렉터리를 패키지로 인식하도록 해주는 역할을 한다.
_ init_.py 파일이 없다면 패키지로 인식하지 않는다(python 3.3버전 이후로는_ init_.py 파일 없이도 패키지로 인식되지만 이전 버전들과의 호환을 위해 사용한다))

profile
개(발자 어)린이입니다

0개의 댓글