Модульная система Python. Модульная система Python. python modularity

Модульная система Python.

Open in new window

Модульность в Python.

Любой язык должен обеспечивать механизм разделения программного кода на части.

В питоне эти части могут быть каталогами - пакетами, модулями - файлами и элементами модуля - переменные классы, объекты и функции.

При использовании этих частей мы в начале их импортируем.

Элементы импорта.

Программный код может быть поделен на две категории - клиентский и библиотечный.

Обычно, мы пишем клиентский код, где используем библиотечные функции, которые импортируем при помощи ключевого слова import.

Рассмотрим какие программные сущности мы можем импортировать.

mylib.py - библиотечный код

GLOBAL_DOMAIN = 'domain.com'

def getDomain():
    print 'My domain is %s' % GLOBAL_DOMAIN

class app():
    typeApp = 'angular+python'
    author = 'Dimitry'
    def getBody(self):
        html = '<body> this is %s application of %s</body>' % (self.typeApp, self.author)
        return html

Мы имеем 3 сущности: переменную, функцию и класс.

Импортируем это из другого, клиентского кода в другом модуле.

myapp.py

import mylib
import mypackage.mylib # в случае если файл mylib.py в папке mypackage
from mylib import GLOBAL_DOMAIN
from mylib import GLOBAL_DOMAIN as D # импорт под псевдонимом чоб избежать конфликтов имен
from mylib import *
from mypackage.mylib import GLOBAL_DOMAIN

Можно импортировать несколько сущностей в одну строку.

Как видно есть много способов импорта которые отличаются тем что именно мы хотим импортировать и где находится то, что мы собираемся импортировать.

При импорте мы производим навигацию через файловую систему при помощи точечной нотации:

from root_dir.sub_rootdir.sub_sub_rootdir.module import some_issue

Важно помнить, что каталог, содержащий импотрируемые модули должен содержать специальный файл init.py

Этот файл используется для обозначения директории как пакета Python и обычно он пуст.

Однако, т.к. он будет исполнен при каждом импорте в нем можно произвести определенные действия.

Например сделать предимпорт каких либо библиотек с другим, болеее удобным именем или создать глобальную переменную.

Например так:

#__init__.py

from mylib import app
myapp = app()

# test.py

from mypackage import myapp
print myapp.getBody()

Other topics