Стандартная библиотека 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')
или:
import sound.wavread as sound
sf = sound.read_wav('foo')
Вопрос: Как создать пакет, чтобы его можно было импортировать как и используется просто, без предоставления python имен файлов (например, wavread
) пользователю пакета? Можно создать «пакет», представляющий собой один файл, содержащий все его функции, но один огромный файл не очень модульный. Как Pythoni c позволяет структурировать сложный пакет для простоты использования и обслуживания?
Требуемый код пользователя:
import sound
sf = sound.read_wav('foo')