Python 패키지

1 개념[ | ]

Python Package
파이썬 패키지
  • 파이썬 모듈들의 묶음
  • 패키지는 모듈들을 잘 구성하기 위한 하나의 방법
  • 점(.)으로 패키지의 아이템 접근이 가능
모듈 이름 A.B가 있다면 A패키지는 B모듈을 서브모듈로 가진다고 생각하면 됨
  • 모듈 상호가 전역변수에 의한 이름 충돌을 막을 수 있음

2 예시[ | ]

sound/                          Top-level package
      __init__.py               Initialize the sound package
      formats/                  Subpackage for file format conversions
              __init__.py
              wavread.py
              wavwrite.py
              aiffread.py
              aiffwrite.py
              auread.py
              auwrite.py
              ...
      effects/                  Subpackage for sound effects
              __init__.py
              echo.py
              surround.py
              reverse.py
              ...
      filters/                  Subpackage for filters
              __init__.py
              equalizer.py
              vocoder.py
              karaoke.py
              ...

3 sys.path[ | ]

  • 패키지를 import 할 때 파이썬은 sys.path에 작성된 디렉토리를 기준으로 패키지 디렉토리를 찾음

4 __init__.py[ | ]

  • __init__.py파일은 파이썬이 패키지가 담겨있는 디렉토리를 패키지로 취급하도록 해줌.
  • 패키지를 위한 초기화 코드가 들어가기도 함.
  • __all__ 변수를 설정하여 import시 어느 범위까지 모듈을 가져올지 정할 수 있음

5 패키지 모듈 사용하기[ | ]

사용법
from package import item
→ item은 하위 모듈, 클래스, 함수, 변수 등이 될 수 있음
예시 1)
  • 모듈 불러오기
import sound.effects.echo
  • 모듈 사용하기
sound.effects.echo.echofilter(input, output, delay=0.7, atten=4)
→ 사용시 전체 경로를 모두 필요함
예시 2)
  • 모듈 불러오기
import sound.effects import echo
  • 모듈 사용하기
echo.echofilter(input, output, delay=0.7, atten=4)
→ 접두어(패키지 경로) 생략 가능
예시 3)
  • 모듈 불러오기
import sound.effects.echo import echofilter
  • 모듈 사용하기
echofilter(input, output, delay=0.7, atten=4)
→ 곧장 사용이 가능함

6 from PACKAGE import *[ | ]

  • *를 사용하여 전체 import시 __init__.py의 __all__의 변수에 추가된 모듈 기준으로 import함
package/                       Top-level package
    __init__.py
    a.py
    b.py
# __init__.py
__all__=["a"]
# a.py
def a():
    print("a")

a()
# b.py
def b():
    print("b")

b()
johnjeong@zetawiki:~/python$ python
Python 2.7.12 (default, Nov 19 2016, 06:48:10) 
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from package import *
a
→ __init__.py에 a모듈만 포함이 되어 있어 a모듈 내용만 출력됨

7 같이 보기[ | ]

8 참고[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}