2week 1day(module, packages)_TIL

miin·2021년 9월 5일
0

TIL

목록 보기
12/24
post-thumbnail

모듈 Module

  • 변수나 함수 그리고 클래스 등을 모아놓은 파일
  • 모듈로 따로 모아놓는 이유는
    다른 파일에서 재사용이 가능하게 하고,
    전체코드가 한 파일에 넣기에는 너무 커졌을때 여러 파일로 나누어서 정리를 하기 위해서 이다
  • 모듈 만드는 방법은 단순히 파일을 만든후 그 안에 재사용 하고 싶은 함수나 클래스 혹은 변수등을 구현하면 된다
  • from 모듈이름 import 함수/변수/클래스1, 함수/변수/클래스2...> (파이썬이 모듈을 해당 파일과 연결시킴)
  • 주의할점: 임포트 할때 파일 확장자인 .py는 제외하고 사용해야 한다
  • 임포트 한 후에는 모듈의 원하는 변수/ 함수 / 클래스를 사용할 수 있다
    모듈이름.모듈에서 사용하고싶은 변수/함수/클래스 이름
  • from..import..키워드를 사용하여 모듈을 불러들이는 경우 모듈 이름을 붙이지 않고 바로 원하는 함수/변수/클래스를 호출할 수 있다
  • 서로 다른 모듈에서 동일한 이름의 함수가 있을 수 있어서 별명(as)을 사용한다
    함수 별명 붙이기
    from .. import .. as ..
    모듈 별명 붙이기
    import ... as ..

패키지 Packages

정의

  • 모듈과 마찬가지로 다른 파일에서 불러와서 사용하는 개념이다
  • 여러개 나눠져 있는 코드를 다른곳에서 하나의 모듈로 불러와서 사용할 수 있도록 해줌
  • 일반 모듈처럼 import 하여 사용한다

차이점

  • 모듈보다 더 크고 복잡한 코드라는 점
  • 해당 패키지 모듈을 dot notation으로 사용한다
    ex) import pkg.mod1
    from .mod1 import func2

초기화

  • __init__.py파일을 통해 패키지 초기설정을 한다
  • 패키지 안에 __init__.py 파일이 있으면 패키지가 임폴트 될때 __init__.py파일의 코드들이 자동으로 실행된다

__init__.py 파일을 통해 할 수 있는것

  • import 할때 경로의 총 길이 줄여주기
  • package에서 import 할 수 있는 변수/함수/클래스 제한하기
    -내부적으로만 사용되어야 할때 __all__변수를 지정하면 외부에서 임폴트 되어 사용되는것을 막음
    -패키지를 통해 임폴트 될 수 있는 요소들은 모두 __all__변수를 통해 정의 됨
    -__all__변수의 default값은 모든 함수/변수/클래스 이다
    -__all__변수는 str값의 요소를 가지고 있는 list이다
    (import되길 원하는 요소들을 str으로 list에 선언해야 함
    )
  • 그 외 package가 import 될때 꼭 먼저 실행되어야 하는 코드들

다른사람이 만든 package를 import하여 사용하기

  • 먼저 package를 설치해야 한다
  • pip라는 툴을 사용한다 (pip은 파이썬의 package manager)
  • pip은 터미널에서 pip install Django 명령어를 사용

python이 module/package를 찾는방법

1. sys.modules

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

2. built-in modules

  • 파이썬에서 제공하는 파이썬 공식 라이브러리들
  • 이미 파이썬에 포함되어 나오므로 파이썬이 쉽게 찾을 수 있다

3. sys.path

  • str으로 되어있는 list형
  • 각 str요소들은 다음처럼 경로를 하나하나 확인하면서 해당경로에 임폴트 하고자 하는 패키지가 위치해 있는지 확인한다

0개의 댓글