How import statement finds modules and packages

woo97·2022년 2월 3일
0

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

일단 sys.modules 와 sys.path를 먼저 정리해보자

(0)sys

sys 모듈은 파이썬 인터프리터가 제공하는 변수와 함수를 직접 제어할 수 있게 해주는 모듈이다

(1)sys.modules

파이썬이 모듈이나 package를 찾기위해 가장 먼저 확인하는 곳입니다.
sys.modules는 단순한 dictionary 입니다. 그리고 이미 import된 모듈과 package들을 저장하고 있습니다.
즉, 한번 import된 모듈과 package들은 파이썬이 또 다시 찾지 않아도 되도록 하는 기능을 가지고 있습니다.
그러므로 새로 import 하는 모듈은 sys.modules 에서 찾을 수 없습니다.

한 번 이상 import가 되었다면 다시 모듈을 찾지 않고 곧바로 sys.modules를 확인하여 사용할 수 있다.

(2)sys.path

파이썬이 마지막으로 찾는 sys.path이다. 모듈을 찾을 때 참조하는 경로를 나타낸다.
리스트 구조(string)이며, sys.path에 자기가 만든 모듈이 들어가있다면 모듈이 저장된 디렉터리로 이동할 필요 없이(내가 만든 모듈이나 패키지는 현재 디렉터리에 있는 것만 불러오기때문) 바로 불러서 사용할 수 있다. sys.path를 이용하여 모듈 검색 경로를 바꿔, 모듈들의 부르기 순서를 바꿀 수 있다. sys.path의 site-packages폴더에는 pip로 설치한 파이썬 패키지가 들어간다.

임의로 등록한 path를 확인 할 수 있다.

Python에서는 아래와 같은 순서로 module/package를 찾는다. sys 모듈을 호출하여 내부를 살펴보면 아래와 같다.
sys.modules => built-in modules => sys.path

2.파이썬은 sys 모듈의 위치를 어떻게 찾을 수 있을까요?

아까 올린 사진이지만 다시보자면 맨 처음에
<module 'sys' (built-in)> 찾을 수 있다.
built-in 모듈이라는 것을 알 수 있다.

Built-in(내장된) 라는 단어처럼 Python에서 제공하는 공식 Library 들 입니다.
위에서 언급한 Library 종류 중 첫 번째인 Python Standard Library(os, sys, time 등)이 여기에 해당됩니다.
이 Library들은 별도의 설치 없이 사용할 수 있습니다.

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

절대경로와 상대경로의 차이점을 서술하기전에 절대경로와 상대경로를 정리 해보자.

절대경로

절대 경로는 말그대로 절대를 잘 생각해보면 됩니다.

d:\10000상자\1000상자\100상자\10상자\상자.text

상자를 찾으러갈려면 점점 작은 숫자의 상자로 들어가서 상자를 찾으면 된다.
절대로 변하지 않는 경로

상대경로

상대경로는 내가 작업하는 위치가 기준이 된다고 생각하면 이해가 쉽습니다.

내가 현재 100상자에 위치해 있는데 상자를사용해야한다면?

100상자\10상자\상자.text

내가 작업하는 곳을 기준으로 경로가 지정됩니다.

차이점

절대경로는 최상단을 기준으로 경로를 잡는다면
상대경로는 현재위치 import하는 곳을 기준으로 경로를 정의한다 절대경로를 지정할 경우 길이가 너무 늘어나는 단점이 있는데 그것을 보안할때 상대경로를 사용하면 좋다

profile
한 발씩 나아가는중

0개의 댓글