TIL50. Modules & Packages

Jaeyeon·2021년 3월 19일
0
post-thumbnail

✅ Modules

모듈이란?

  • 변수나 함수 그리고 클래스 등을 모아놓은 파일입니다.
  • 즉 , 하나의 파이썬 코드 파일을 의미한다.

모듈을 만드는 이유?

  • 다른 파일에서 재사용이 가능하게 하기 위해서
  • 전체 코드가 한 파일에 넣기에는 너무 커졌을 때

모듈 만들기

  • .py 파일을 만들고 그 안에 재사용 하고 싶은 함수나 클래스 혹은 변수를 구현하면 된다.

import 하여 모듈 불러오기

  1. .py는 제외하고 파일이름만 사용해서 import하기
    import <모듈이름>
  2. 모듈의 원하는 변수 / 함수 / 클래스를 사용
    <모듈 이름>.<모듈에서 사용하길 원하는 변수/함수/클래스 이름>
    my_module.my_module_func()

from ... import 하여 모듈 불러오기

  1. .py는 제외하고 파일이름만 사용해서 from 과 import하기
    from <모듈 이름> import <함수/변수/클래스1>, <함수/변수/클래스2>, ..., <함수/변수/클래스N>

from my_module import my_module_func, my_module_var
print(my_module_var)

from 모듈 import * 을 사용해도 되지만 권장하지않는다.
왜냐하면 local scope를 가지고 있는 다른 변수/함수/클래스 들과 이름 충돌이 날 수 있는데,
만일 이름 충돌이 일어났을 경우 알기가 쉽지 않을수 있기 때문입니다.

from ... import ...as로 모듈 불러오기

from my_module  import my_func as f1
from my_module2 import my_func as f2

print(f1())
print(f2())

✅ Packages

패키지란?

  • 패키지도 마찬가지로 다른 파일에서 불러와서 사용하는 개념이지만 module보다 더 크고 복잡한 코드이다.
  • 즉, 패키지는 모듈을 모아 놓은 디렉토리 구조라고 할 수 있다.

import를 이용하여 패키지 불러오기

import 패키지.모듈
import package.mod1

from ... import 를 이용하여 패키지 불러오기

from 패키지.모듈 import 변수
from 패키지.모듈 import 함수
from 패키지.모듈 import 클래스
from 패키지.모듈 import 변수, 함수, 클래스

from pkg.mod2 import func2

__init__.py

  • 해당 디렉토리가 패키지 임을 알려주는 역할
  • package가 import 될 때 초기 설정 목적으로 __init__.py를 사용한다.
  • package 안에 __init__.py 가 있으면 패키지가 임포트 될 떄 __init__.py파일의 코드들이 자동으로 실행 된다.

__init__.py로 할 수 있는 일

1. Import 할때 경로의 총 길이 줄여주기

패키지에서 mod1의 func2 라는 함수를 import하기 위해서는 아래코드를 실행 하여야 한다.

하지만 __init__.py 에 먼저 import를 해주면


위 코드 처럼 모듈 불러오듯이 패키지를 불러 올 수 있다.

2. Package에서 import 할 수 있는 변수/함수/클래스 제한하기

  • 모듈의 특정 함수는 내부적으로만 사용이 되어야 할 때 __all__변수를 지정해주면 된다.
  • __all__ 변수의 디폴트값은 모든 함수/변수/클래스 이다.
  • 그러므로 __all__ 변수를 따로 정의해 줌으로써 import 될 수 있는 요소들을 제한 할 수 있다.
  • __all__변수는 string 값의 요소를 가지고 있는 list이다.
  • import 되길 원하는 요소들만 list안에 string으로 선언 해주면 된다.

profile
생각하는 개발자 되기

0개의 댓글