모듈은 함수나 변수, class들을 모아 놓은 파일이다.
프로그램을 작성할 때 모든 코드를 하나의 파일에 작성하는 것은 매우 힘들고 아무도 그렇게 하지 않는다.
파일 여러 개에 나누어 코드를 작성할 때 다른 파일에서 또 다른 파일에 작성한 내용을 이용할 수 있는데
이것을 모듈이라고한다.
모듈은 자신이 직접 만들 수도 있고, 미리 만들어져있는 모듈을 사용할 수도 있다.
대표적으로 math 모듈이 있다.
math는 내장 함수가 아니기 때문에 불러와서 사용해야한다.
이때 외부 모듈인 math 를 불러오기 위한 키워드가 import이다.
모듈을 만들 때 같은 파일경로 안에 존재하면 간단히 불러올 수 있다
ass_3_src, customers, car_rental은 폴더명이다.
ass_3_src경로의 폴더에서 다른 하위폴더에 들어가 있는 클래스를 import해서 사용하려면
import car_rental.cars as cars
import customers.customers as customers
import car_rental.garage as garage
import car_rental.rental_shop as rental_shop
이와 같이 폴더명.파일명 방식으로 접근하여 사용할 수 있다.
import할 때에는 파일 경로를 \, /가 아닌 .(dot)으로 나타낸다.
지금까지는 같은 프로젝트 폴더에 있는 모듈을 사용할 때이고,
내가 모듈을 직접 만들어
math모듈처럼 여러 프로젝트에서 사용하려면 어떻게 해야할까?
모듈을 모아두는 폴더를 만들고 그 경로를 환경변수를 설정하면 된다!
C드라이브에 내가 만든 모듈을 저장할 폴더를 만든다.
python_lib라는 폴더를 만들었다.
그 후
내 컴퓨터 - 속성 - 고급 시스템 설정으로 들어간다
누르면 나오는 시스템 속성에서 환경변수를 눌러 들어가준다
환경변수에 들어가면 사용자 변수와 시스템 변수가 나온다
사용자변수는 지금 로그인한 계정으로 pc에 접속했을 때만 해당되는 것이고
시스템변수는 이 pc전체에 적용되는 것이다.
시스템 변수에 추가하기로 하고 아래쪽 새로만들기 버튼을 누른다.
변수 이름에 PYTHONPATH를 입력하고
변수 값에 아까 만들어둔 python_lib의 경로를 입력해주고 확인-확인을 눌러 저장해주면 환경변수 설정이 끝난다.
python_lib 폴더안에 my_module.py라는 파일을 만들고 변수를 하나 입력해주었다.
my_var = 3.141592
그런 다음 D드라이브에 있는 워크스페이스에서 import를 해보았다.
import my_module
print(my_module.my_var)
=> 3.141592
정상적으로 잘 작동한다.
하지만 my_var를 이용할 때마다 앞에 my_module.을 붙여주기가 귀찮다.
그럴때는 from 모듈파일명 import 변수명(or 클래스명 or 함수명)
이렇게 작성하면 모듈명을 앞에 붙이지 않고 이 파일내에서 정의한 것들과 동일한 방식으로 사용할 수 있다.
from my_module import my_var
print(my_var)
=> 3.141592
근데 이것도 너무 길다! 하면 줄일 수 있다.
이 경우는 별로 길지 않지만
만일 python_lib폴더 내 하위폴더 A, 그 폴더의 하위폴더 B에 정의되어있는 모듈의 경우 import를 할 때는
import A.B.my_module
print(A.B.my_module.my_var)
이런 식으로 작성해야해서 매우 귀찮다.
이럴때는 as 키워드를 사용해서 줄일 수 있다.
from A.B.my_module import my_var as v1
print(v1)
as를 사용해서 import한 요소에 별칭을 붙여 호출하면 간편하게 이용할 수 있다.
'Programming > Python' 카테고리의 다른 글
[method] instance method vs class method vs static method (0) | 2023.03.14 |
---|---|
[Python] 이터레이터 계속 반복하기 itertools cycle (0) | 2022.07.06 |
[python] 매직메소드 Magin Method (0) | 2022.01.26 |
[python] 함수 (0) | 2022.01.21 |
[python] 제어문 Control Statement (0) | 2022.01.20 |