>

Python 표준 라이브러리에는 가져 와서 사용하도록 설계된 함수가 있습니다. 예를 들면 다음과 같습니다.

import re
m = re.search('foo')

패키지 문서https://docs.python.org/3/tutorial/modules.html#packages 하위 패키지 레이아웃의 예가 있습니다. 그러나 하위 패키지가없는 단일 패키지 만 갖도록 단순화합시다.

sound/                  Top-level package
    __init__.py               Initialize the sound package
    wavread.py
    wavwrite.py
    ...

우리의 가상 wavread.py는 함수를 정의합니다 :

def read_wav(name):
    return 'Hello ' + name

이 패키지의 함수는 다음과 같이 호출됩니다.

<올>
  • 패키지 이름 (소리)
  • 파일 이름 (wavread)
  • 파일 내에 정의 된 함수 이름 (read_wav ())
  • 예를 들면 다음과 같습니다.

    import sound.wavread
    sf = sound.wavread.read_wav('foo')
    print(sf)
    
    

    또는:

    import sound.wavread as sound
    sf = sound.read_wav('foo')
    print(sf)
    
    

    <시간>

    질문:표준 라이브러리와 같이 간단하게 가져오고 사용할 수 있도록 패키지를 작성하는 방법은 무엇입니까? 모든 기능을 포함하는 단일 파일 인 "패키지"를 만들 수는 있지만 하나의 거대한 파일은 그다지 모듈화되지 않습니다. 사용 편의성과 유지 관리 편의성을 위해 복잡한 패키지를 구성하는 Pythonic 방법은 무엇입니까?

    "원본을 사용하십시오. Luke"는 올바른 대답이지만 패키지 설명서에 모범 사례가없는 이유에 대한 의문을 제기합니다.

    import sound
    sf = sound.read_wav('foo')
    print(sf)
    
    

    • 답변 # 1

      __init__.py 다음을 수행하십시오.

      from .wavread import * #or only the functions you want to export from  wavread.py
      from .wavwrite import *
      # and so on for all files that implement function of the sound module
      
      

      이 방법으로 사운드 모듈 사용자는 from sound import * 또는 from sound import read_wav 또는

      import sound
      # ...
      sf = sound.read_wav('foo')
      
      

  • 이전 명령 프롬프트를 사용하여 디렉토리별로 Lua를 사용하여 파일 읽기
  • 다음 c++ - std - : optional을 사용하여 맵을 초기화하고 emplace를 사용하여 추가하는 방법