Команда from ... import позволяет вам импортировать не весь модуль целиком, а только определенное его содержимое. Например:
>| # Импортируем из модуля math функцию sqrt
>| from math import sqrt
>| # Выводим результат выполнения функции sqrt.
>| # Обратите внимание, что нам больше незачем указывать имя модуля
>| print (sqrt(144))
>|
>| # Но мы уже не можем получить из модуля то, что не импортировали
>| print (pi) # Выдаст ошибку
Выражение from ... import не импортирует весь модуль, а только предоставляет доступ к конкретным объектам, которые мы указали.
В Python так же возможно импортировать всё (переменные, функции, классы) за раз из модуля, для этого используется конструкция from ... import *. Например:
>| from math import *
>| # Теперь у нас есть доступ ко всем функция и переменным, определенным в модуле math
>|
>| print (sqrt(121))
>| print (pi)
>| print (e)
Однако это конструкцию следует использовать с осторожностью, поскольку при импортировании нескольких модулей можно запутаться в своем собственном коде.
Когда вы импортируете модуль, интерпретатор Python ищет этот модуль в следующих местах:
1. Директория, в которой находится файл, в котором вызывается команда импорта
2. Если модуль не найден, Python ищет в каждой директории, определенной в консольной переменной PYTHONPATH.
3. Если и там модуль не найден, Python проверяет путь заданный по умолчанию
*
Путь поиска модулей сохранен в системном модуле sys в переменной path. Переменная sys.path содержит все три вышеописанных места поиска модулей.
Для того, чтобы получить список всех модулей, установленных на вашем компьютере достаточно выполнить команду:
>| help("modules")
Через несколько секунд вы получите список всех доступных модулей.
Чтобы создать свой модуль в Python достаточно сохранить ваш скрипт с расширением .py Теперь он доступен в любом другом файле. Например, создадим два файла: module_1.py и module_2.py и сохраним их в одной директории. В первом запишем:
>| def hello():
>| print ("Hello from module_1")
А во втором вызовем эту функцию:
>| from module_1 import hello
>|
>| hello()
Выполнив код второго файла получим:
Hello from module_1
Встроенная функция dir() возвращает отсортированный список строк, содержащих все имена, определенные в модуле.
>| # на данный момент нам доступны лишь встроенные функции
>| dir()
>| # импортируем модуль math
>| import math
>| # теперь модуль math в списке доступных имен
>| dir()
>| # получим имена, определенные в модуле math
>| dir(math)
Код на Python может быть организован следующим образом:
* Первый уровень это обычные команды на Python.
* Команды на Python могут быть собраны в функции.
* Функции могут быть частью класса.
* Классы могут быть определены внутри модулей.
* Наконец, модули могут составляться в пакеты модулей.
Отдельные файлы-модули с кодом на Python могут объединяться в