Модуль в Python — как работает и примеры

В этом уроке вы узнаете, что такое модуль Python, и поймете, как он работает.

Что такое модуль Python?

Модуль в Python — это файл, содержащий код Python. Фактически все в Python является объектом, включая модуль.

Когда вы импортируете модуль с помощью оператора import, Python создает новый объект модуля. Например, следующий код импортирует встроенный математический модуль:

import math

Python создает новую переменную с именем math, которая ссылается на объект модуля:

import math

print(math)

Math — это переменная, которая ссылается на объект модуля:

<module 'math'(built-in)>

Имя модуля — math. Тип математического модуля — модуль класса:

<class 'module'>

Если вы посмотрите на globals(), вы увидите переменную math в глобальном пространстве имен:

import math
from pprint import pprint

pprint(globals())

Выход:

{'__annotations__': {},
 '__builtins__': <module 'builtins'(built-in)>,
 '__doc__': None,
 '__loader__': <class '_frozen_importlib.BuiltinImporter'>,
 '__name__': '__main__',
 '__package__': None,
 '__spec__': None,
 'math': <module 'math'(built-in)>,
 'pprint': <function pprint at 0x0000023FE66491F0>}

Поскольку math — это объект, вы можете получить доступ к его атрибутам. Например, вы можете получить имя математического объекта, используя атрибут __name__:

import math

print(math.__name__)

Выход:

math

И вы можете получить доступ ко всем атрибутам объекта math через __dict__:

import math
from pprint import pprint

pprint(math.__dict__)

Выход:

'__doc__': 'This module provides access to the mathematical functions\n'
            'defined by the C standard.',
 '__loader__': <class '_frozen_importlib.BuiltinImporter'>,
 '__name__': 'math',
 '__package__': '',
 '__spec__': ModuleSpec(name='math', loader=<class '_frozen_importlib.BuiltinImporter'>, origin='built-in'),
 'acos': <built-in function acos>,

...

И вы можете использовать math как обычную переменную. Например, вы можете установить значение None:

math = None

Это указывает Python уничтожить объект модуля, на который ссылается математическая переменная math.

math является экземпляром ModuleType:

import math
from types import ModuleType

pprint(isinstance(math,ModuleType))

Выход:

True

Математический модуль math является встроенным модулем. Давайте рассмотрим невстроенный модуль.

Невстроенный модуль

Модуль abc позволяет определять абстрактные базовые классы. Это не встроенный модуль:

import abc

print(abc)

Выход:

<module 'abc' from 'C:\\Python\\lib\\abc.py'>

Модуль abc определен в файле lib\abc.py в папке установки Python в отличие от математического модуля, который является встроенным модулем.

Тип abc также является модулем:

import abc

print(type(abc))

Выход:

<class 'module'>

Как и математический модуль, abc является экземпляром ModuleType, как показано в следующем примере:

import abc
from types import ModuleType

pprint(isinstance(abc,ModuleType))

Выход:

True
Похожие посты
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *