Модули Python

По мере роста программы код может содержать множество строк. Вместо того чтобы помещать всё в один файл, мы можем использовать модули, чтобы разделить код по отдельным файлам в соответствии с его функциональностью. Это делает наш код организованным и более удобным для сопровождения.

Модуль — это файл, содержащий код для выполнения определённой задачи. Модуль может содержать переменные, функции, классы и т. д. Рассмотрим пример.

Создадим модуль. Введите следующее и сохраните как example.py.

# Python Module addition

def add(a, b):

   result = a + b
   return result

Здесь мы определили функцию add() внутри модуля с именем example. Функция принимает два числа и возвращает их сумму.


Импорт модулей в Python

Мы можем импортировать определения из одного модуля в другой модуль или в интерактивный интерпретатор Python.

Для этого используется ключевое слово import. Чтобы импортировать ранее определённый модуль example, мы вводим следующее в Python prompt:

import example

Это не импортирует имена функций, определённых в example, непосредственно в текущую таблицу символов. Импортируется только имя модуля example.

Используя имя модуля, мы можем обратиться к функции с помощью оператора точки .. Например:

example.add(4,5) # возвращает 9

Примечание

  • В Python есть множество стандартных модулей. Полный список стандартных модулей Python и их назначение можно посмотреть на странице официальной документации.

  • Стандартные модули импортируются так же, как и пользовательские.


Импорт модулей стандартной библиотеки Python

Стандартная библиотека Python содержит более 200 модулей. Мы можем импортировать модуль по мере необходимости.

Допустим, мы хотим получить значение pi. Сначала импортируем модуль math и используем math.pi. Например,

# импорт стандартного модуля math
import math

# используем math.pi для получения значения pi
print("The value of pi is", math.pi)

Вывод

The value of pi is 3.141592653589793

Импорт Python с переименованием

В Python мы также можем импортировать модуль, переименовав его. Например,

# импорт модуля с переименованием
import math as m

print(m.pi)

# Вывод: 3.141592653589793

Здесь мы переименовали модуль math в m. В некоторых случаях это экономит время при наборе кода.

Обратите внимание: имя math не распознаётся в нашей области видимости. Следовательно, math.pi некорректно, а m.pi — правильная реализация.


Инструкция from…import

Мы можем импортировать конкретные имена из модуля, не импортируя модуль целиком. Например,

# импортируем только pi из модуля math
from math import pi

print(pi)

# Вывод: 3.141592653589793

Здесь мы импортировали только атрибут pi из модуля math.


Импорт всех имён

В Python мы можем импортировать все имена (определения) из модуля с помощью следующей конструкции:

# импортируем все имена из стандартного модуля math
from math import *

print("The value of pi is", pi)

Здесь мы импортировали все определения из модуля math. Это включает все имена, видимые в нашей области видимости, кроме тех, что начинаются с символа подчёркивания (приватные определения).

Предупреждение

Импорт всего с помощью символа звёздочки (*) — не лучшая практика программирования. Это может привести к дублированию определений для идентификатора. Также это снижает читаемость кода.


Встроенная функция dir()

В Python мы можем использовать функцию dir() для вывода списка всех имён функций в модуле.

Например, ранее мы определили функцию add() в модуле example.

Мы можем использовать dir для модуля example следующим образом:

print(dir(example))

['__builtins__',
'__cached__',
'__doc__',
'__file__',
'__initializing__',
'__loader__',
'__name__',
'__package__',
'add']

Здесь мы видим отсортированный список имён (вместе с add). Все остальные имена, начинающиеся с символа подчёркивания, — это атрибуты Python по умолчанию, связанные с модулем (не определённые пользователем).

Например, атрибут __name__ содержит имя модуля.

import example

example.__name__

# Вывод: 'example'

Все имена, определённые в текущем пространстве имён, можно узнать с помощью функции dir() без аргументов.

a = 1
b = "hello"

import math

print(dir())

['__builtins__', '__doc__', '__name__', 'a', 'b', 'math', 'pyscripter']

Видео: модули Python