TIL - Wecode | python-Module, Package

한성봉·2021년 5월 16일
0

Modules & Packages

Modules

파이썬에서 모듈은 변수나 함수, 클래스 등을 모아놓은 파일이다.
그 이유는 두가지로 나눌 수 있다.

  • 재사용할 수 있게 한다.
  • 1개의 파일에 너무 많은 코드를 다으면 가독성이 떨어져 기능별로 분산하여 저장하기 위해서 다른 파일에 옮겨둔 것이 모듈이다.

1. 모듈 불러오기

import <모듈 이름>

모듈이름을 적을 때 확장자인 .py는 제외하고 작성한다.

2. 불어온 모듈의 기능 사용하기

<모듈 이름>.<함수,변수,클래스 이름>
my_module.my_list()

위와 같은 형태로 불러온다.

모듈이름을 앞에 붙여주는 이유는 파이썬이 어느 파일에서 검색할 지 알게해주기 위해서이다. 만약 해당 파일에서 함수명만 사용한다면 해당파일에서 검색하기 때문이다.

3. 다양한 모듈 불러오기

import <모듈 이름>
from <모듈 이름> import <변수/함수/클래스1 이름>, <변수/함수/클래스2 이름> ...
from <모듈 이름> import *

*표시는 해당 모듈파일의 모든 변수,함수,클래스 즉 기능들을 불러온다.
하지만 이렇게 하는 것은 권장되지 않습니다.
왜냐하면 local scope를 가지고 있는 다른 변수/함수/클래스 들과 이름 충돌이 날 수 있는데, 만일 이름 충돌이 일어났을 경우 알기가 쉽지 않을수 있기 때문입니다.

from <모듈 이름> import <함수/변수/클래스1> as <원하는 이름>

as뒤에 불러온 기능의 이름을 편의대로 바꿔서 사용할 수 있다.

import <모듈 이름> as <원하는 이름>

모듈이름도 사용자 정의가 가능하다.

Package

PackageModule과 마찬가지로 필요한 기능들을 모아놓은 파일입니다. 필요시 불러와서 사용한다는 점은 모듈과 똑같지만 모듈과 차이점은 모듈보다 더 크고 복잡한 코드입니다. 모듈들도 코드를 작성하고 기능을 만들다 보면 너무 커져 가독성이 떨어지는 파일이 될 수 있습니다. 그렇기 때문에 모듈도 사용자 임의대로 나눠서 저장합니다. 그 분산된 모듈들의 집합이 바로 패키지입니다.

쉽게 말해 패키지는 모듈이라는 파일을 모아놓는 디렉토리입니다.

패키지 불러오기

import <패키지이름.모듈파일이름>
from <패키지이름.모듈파일이름> import <함수/변수/클래스 이름>

Package Initialization

파이썬은 init.py 파일을 통해 package 초기 설정을 가능하게 해줍니다. Package 안에 init.py 파일이 있으면 package가 import 될때 init.py 파일의 코드들이 자동으로 실행됩니다.

__init__.py 의 기능

- Import 할때 경로의 총 길이 줄여주기
- Package에서 import 할 수 있는 변수/함수/클래스 제한하기
- 그 외 package가 import될때 꼭 먼저 실행되어야 하는 코드들
  • import 할 때 경로의 총 길이 줄여주기
    init.py 파일에 먼저 한번 import 해주면됩니다.
 # __init__.py
from .mod1 import func2
# main.py
from pkg import func2
  • Package에서 import 할 수 있는 변수/함수/클래스 제한하기
    __init.py__ 파일을 사용해서 import 할 수 있는 변수/함수/클래스를 제한할 수 있습니다.

예를 들어 모듈의 모든 함수가 다 외부로 노출될 수 있는건 아닐수 있습니다. 내부적으로만 사용되어야 하는 함수도 있을수 있는데요, 이러한 함수가 package 외부에서 import되어 사용되는 것을 막기 위해서는 __all__ 변수를 지정해 줄 수 있습니다.

package를 통해 import 될 수 있는 요소들은 모두 __all__ 변수를 통해 정의 됩니다.
그리고 __all__ 변수의 default 값은 모든 함수/변수/클래스 입니다.
그러므로 __all__ 변수를 따로 정의해줌으로 import 될 수 있는 요소들을 제한할 수 있는 것입니다.

__all__ 변수는 string 값의 요소를 가지고 있는 list 입니다 (list of strings).
그러므로 import 되길 원하는 요소들을 string으로 list에 선언해주면 됩니다.

외부 패키지 사용하기

맥에서는 터미널에서 pip를 통해 외부 패키지를 설치할 수 있습니다.

pip install Django

0개의 댓글