Шаг 126.
Основы языка Python.
Модули и пакеты. Инструкция import

    На этом шаге мы рассмотрим назначение и особенности использования этой инструкции.

    Импортировать модуль позволяет инструкция 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 в этом случае использовать уже нельзя.

    На следующем шаге мы закончим рассмотрение этого вопроса.




Предыдущий шаг Содержание Следующий шаг