[Python] 57 Assignment

Jeongyun Heo·2021년 1월 18일
0

Python

목록 보기
36/36

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

sys.modules - 딕셔너리. 과거에 import 했던 모듈과 패키지가 저장되어 있음.
sys.path - 리스트. 파이썬 라이브러리가 설치되어 있는 디렉터리 경로를 보여 준다.


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

sys 모듈은 파이썬을 설치할 때 함께 설치되는 built-in modules이다.

Built-in 모듈들은 이미 파이썬에 포함되어 나오므로 파이썬이 쉽게 찾을 수 있다.


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

absolute path
최상위 디렉토리부터 경로를 다 입력해야 한다. 경로가 길어진다는 단점이 있다. import 하는 파일이나 경로에 상관없이 항상 경로가 동일하다.

relative path
프로젝트의 최상단 디렉토리를 기준으로 경로를 잡는 게 아니라 import 하는 위치를 기준으로 경로를 정의한다. 경로의 길이를 줄여준다는 장점이 있지만,
헷갈리기 쉽고 파일 위치가 변경되면 경로 위치도 변경되어야 하는 단점이 있다.


4. calculator 패키지 만들기

앞으로 개발하면서 많은 패키지를 사용할 것이고 만들어야 하는 경우도 있을 수 있기 때문에 이번과제는 직접 패키지를 만들어 보는 과제 입니다.

로컬 환경에서 파이썬을 설치하고 진행해 주세요.

디렉토리 구조는 다음과 같고 각 파일의 코드내용은 다음과 같습니다.

__init__.py 파일에는 아무코드도 없지만 해당 디렉토리가 패키지임을 알려주는 역할을 합니다.


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

Traceback (most recent call last):
File "/Users/nana/projects/57-assignment/main.py", line 5, in
from .calculator.add_and_multiply import add_and_multiply
ImportError: attempted relative import with no known parent package

메인 모듈의 이름은 항상 __main__ 이기 때문에, 파이썬 응용 프로그램의 메인 모듈로 사용될 목적의 모듈들은 반드시 절대 임포트를 사용해야 한다.

absoulte path로 import 하니까 에러 없이 결괏값 5가 잘 나왔다.


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

add_and_multiply.py에서는 절대경로, 상태경로 둘 다 잘 된다.

main 모듈은 파이썬 응용 프로그램의 메인 모듈로 사용될 목적의 모듈들은 반드시 절대경로를 사용해야 한다.


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

__init__.py 파일은 해당 디렉터리가 패키지의 일부임을 알려주는 역할을 한다. 패키지에 포함된 디렉터리에 __init__.py 파일이 없다면 패키지로 인식되지 않는다.
python3.3 버전부터는 __init__.py 파일이 없어도 패키지로 인식한다. 하지만 하위 버전 호환을 위해 __init__.py 파일을 생성하는 것이 안전한 방법이다.

0개의 댓글