014. Python

4209 단어 pythonpython

sys.modules

  • 파이썬이 모듈이나 package를 찾기위해 가장 먼저 확인하는 곳
  • sys.modulesdictionary 형태
  • 한 번 실행된 importmodulepackage들을 저장(한 번 실행된 modulepackage들을 다시 찾지 않도록 하는 기능)
  • 로 import 하는 모듈은 sys.modules 에서 찾을 수 없음

sys.path

  • sys.pathstring 요소들을 가지고 있는 list 형태
  • string 요소들은 경로를 나타냄
['',
 '/Users/song-eun-u/anaconda3/bin',
 '/Users/song-eun-u/anaconda3/lib/python36.zip',
 '/Users/song-eun-u/anaconda3/lib/python3.6',
 '/Users/song-eun-u/anaconda3/lib/python3.6/lib-dynload',
 '/Users/song-eun-u/anaconda3/lib/python3.6/site-packages',
 '/Users/song-eun-u/anaconda3/lib/python3.6/site-packages/aeosa',
 '/Users/song-eun-u/anaconda3/lib/python3.6/site-packages/IPython/extensions',
 '/Users/song-eun-u/.ipython']
  • list의 각 경로를 하나 하나 확인하면서 해당 경로에 import 하고자 하는 package가 위치해 있는지 확인

1. sys.modules sys.path 차이

  • sys.modules는 한번도 실행하지 못한 module이나 package의 정보를 가지고 있지 않지만 sys.path는 경로에 저장되어 있다면 찾아낼 수 있다

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

  • sys 모듈은 파이썬에 내장되어 있는 모듈로 파이썬 내부에 저장되어있다
import sys

print(sys.builtin_module_names)
  • builtin module의 목록을 불러와서 확인할 수 있다

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

  • Absolute path의 경우 나의 위치와 관계없이 원하는 곳이 어떤 경로 안에 위치해 있는지 지정해서 움직이는 방면, relative path는 현재 나의 위치를 기준으로 이동하고 싶은 위치로 이동하는 방법이기 때문에, 아무래도 Absolute path 보다는 헷갈릴 가능성이 존재한다

4. calculator 패키지 만들기

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

  • 참고 자료를 살펴 보니 relative pathimport는 현재의 모듈을 기반으로 이루어진다. 직접 실행하는 모듈(메인 모듈)의 이름은 항상 "__main__"이고, 파이썬에서 메인 모듈은 항상 absolute path를 사용해야하기 때문에 relative pathabsolute path로 설정해주면 된다
  • 값이 5로 잘 출력되는 상황이다

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

  • 상대 경로와 절대 경로 모두 결과를 잘 출력해 준다
  • add_and_multiply.py\__main__.py가 아니기 때문에 절대 경로든 상대 경로든 문제 없이 동작한다.

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

  • \__init__.py가 존재하는 디렉토리는 패키지의 일부임을 알려주는 역할을 한다
  • package 초기 설정을 할 수 있는 역할을 한다
  • \__init__.py 파일이 존재하지 않는다면 패키지의 일부인지 인식을 하지 못해 속성을 가지고 있지 않는다는 에러가 발생
  • package 실행 시 설정해주고 싶은 초기 설정이 있다면 이 파일에 초기 설정에 관련된 코드들을 작성하면 작성 한 코드의 내용대로 package 실행 시 자동으로 실행

좋은 웹페이지 즐겨찾기