패키지 사용법

이승주·2024년 8월 2일

파이썬 문법 정리

목록 보기
8/10

다음은 패키지의 가능한 구조이다.

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
              ...

sys.path패키지를 가져올 때, Python은 패키지 하위 디렉터리를 찾기 위해 디렉터리를 검색합니다.

init.py파일은 Python이 파일을 포함하는 디렉토리를 패키지로 취급하도록 하는 데 필요합니다(최근 버전에서는 init.py를 사용하지 않아도 알아서 구분하기때문에 사용자에 취향에 따라 사용할지 결정). 이렇게 하면 와 같은 일반적인 이름을 가진 디렉토리가 모듈 검색 경로에서 나중에 발생하는 유효한 모듈을 의도치 않게 숨기는 것을 방지할 수 있습니다.

패키지 사용자는 다음과 같이 패키지에서 개별 모듈을 가져올 수 있습니다.

import sound.effects.echo
이것은 하위 모듈을 로드합니다 sound.effects.echo. 전체 이름으로 참조해야 합니다.

ound.effects.echo.echofilter(input, output, delay=0.7, atten=4)
하위 모듈을 가져오는 또 다른 방법은 다음과 같습니다.

from sound.effects import echo
이렇게 하면 하위 모듈이 로드 echo되고 패키지 접두사 없이 사용할 수 있으므로 다음과 같이 사용할 수 있습니다.

echo.echofilter(input, output, delay=0.7, atten=4)
또 다른 변형은 원하는 함수나 변수를 직접 가져오는 것입니다.

from sound.effects.echo import echofilter
다시 말해서, 이렇게 하면 하위 모듈이 로드되지만 echo해당 기능을 echofilter()직접 사용할 수 있습니다.

echofilter(input, output, delay=0.7, atten=4)
를 사용할 때, 항목은 패키지의 하위 모듈(또는 하위 패키지)이거나, 함수, 클래스 또는 변수와 같이 패키지에 정의된 다른 이름일 수 있습니다. 명령문은 먼저 항목이 패키지에 정의되어 있는지 테스트합니다. 정의되어 있지 않으면 모듈이라고 가정하고 로드를 시도합니다. 찾지 못하면 예외가 발생합니다.from package import itemimportImportError

반대로, 와 같은 구문을 사용할 때 마지막 항목을 제외한 각 항목은 패키지여야 합니다. 마지막 항목은 모듈이나 패키지가 될 수 있지만 이전 항목에서 정의된 클래스, 함수 또는 변수가 될 수 없습니다.import item.subitem.subsubitem

profile
개발자 공부

0개의 댓글