На этом шаге мы рассмотрим назначение и особенности использования этой инструкции.
Импортировать модуль позволяет инструкция import. Мы уже не раз обращались к этой инструкции для подключения встроенных модулей. Например, подключали модуль time для получения текущей даты с помощью функции strftime():
>>> import time # Импортируем модуль time >>> print(time.strftime("%d.%m.%Y")) # Выводим текущую дату 06.02.2018
Инструкция import имеет следующий формат:
import <Название модуля 1> [as <Псевдоним 1>][, ..., <Название модуля N> [as <Псевдоним N>]]
После ключевого слова import указывается название модуля. Обратите внимание на то, что название не должно содержать расширения и пути к файлу. При именовании модулей необходимо учитывать, что операция импорта создает одноименный идентификатор, - это означает, что название модуля должно полностью соответствовать правилам именований переменных. Можно создать модуль с именем, начинающимся с цифры, но подключить такой модуль будет нельзя. Кроме того, следует избегать совпадения имен модулей с ключевыми словами, встроенными идентификаторами и названиями модулей, входящих в стандартную библиотеку.
За один раз можно импортировать сразу несколько модулей, записав их через запятую. Для примера подключим модули time и math.
>>> import time, math # Импортируем несколько модулей сразу >>> print(time.strftime("%d.%m.%Y")) # Текущая дата 06.02.2018 >>> print(math.pi) # Число pi 3.141592653589793
После импортирования модуля его название становится идентификатором, через который можно получить доступ к атрибутам, определенным внутри модуля. Доступ к атрибутам модуля осуществляется с помощью точечной нотации. Например, обратиться к константе pi, расположенной внутри модуля math, можно так:
math.pi
Функция getattr() позволяет получить значение атрибута модуля по его названию, заданному в виде строки. С помощью этой функции можно сформировать название атрибута динамически во время выполнения программы. Формат функции:
getattr (<Объект молуля>, <Атрибут>[, <Значение по умолчанию>] )
Если указанный атрибут не найден, возбуждается исключение AttributeError. Чтобы избежать вывода сообщения об ошибке, можно в третьем параметре указать значение, которое будет возвращаться, если атрибут не существует. Пример использования функции приведен ниже.
>>> import math >>> print (getattr (math, "pi")) # Число pi 3.141592653589793 >>> print (getattr(math, "x", 50)) # Число 50, т. к. х не существует 50
Проверить существование атрибута позволяет функция hasattr (<Объект>, <Название атрибута>). Если атрибут существует, функция возвращает значение True. Напишем функцию проверки существования атрибута в модуле math.
import math def hasattr_math(attr): if hasattr(math, attr): return "Атрибут существует" else: return "Атрибут не существует" print (hasattr_math("pi")) # Атрибут существует print(hasattr_math("x")) # Атрибут не существует
Если название модуля слишком длинное, и его неудобно указывать каждый раз для доступа к атрибутам модуля, то можно создать псевдоним. Псевдоним задается после ключевого слова as. Создадим псевдоним для модуля math.
>>> import math as m # Создание псевдонима >>> print(m.pi) # Число pi 3.141592653589793
Теперь доступ к атрибутам модуля math может осуществляться только с помощью идентификатора m. Идентификатор math в этом случае использовать уже нельзя.
На следующем шаге мы закончим рассмотрение этого вопроса.