Подключение внешних модулей python

Подключение модулей в Python

Язык программирования Python имеет много встроенных функций. Однако их не хватает для решения всех видов задач, поэтому программисты добавляют инструменты, подключая модули.

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

Это отдельный файл, содержащий какой-то код. Любой скрипт, написанный программистом на Python 3, можно назвать модулем. Он может быть как исполняемым, так и подключаемым. Исполняемый модуль содержит код, который самостоятельно выполняет какие-то действия, а подключаемый представляет из себя набор функций, классов и объектов, которые можно использовать для решения задач в другой программе.

Разделение программ на модули даёт ряд преимуществ:

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

Исполняемый и подключаемый модуль

Можно написать такой скрипт, который будет и выполнять какие-то действия (программа), и импортироваться в другие модули (библиотека).

Его важно правильно оформить:

  1. Весь исполняемый код помещается в функцию main() .
  2. Функция main() вызывается после условия:
if __name__ == '__main__': main()

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

Подключение модуля

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

Модули в Python — это файлы с расширением «.py». При импорте расширение опускается, интерпретатор и так знает, что после команды import следует имя модуля.

Программист может без проблем подключить любой модуль, который есть в стандартной библиотеке Python 3. Для подключения специфичных пользовательских инструментов сначала нужно их скачать. Обычно для этого используется пакетный менеджер pip.

Обычное подключение — import

Подключать модули желательно в самом вверху скрипта, используя ключевое слово «import», например import random .

После подключения программа получает доступ ко всем функциям, методам и классам, содержащимся в нём.

Программист может вызвать любую функцию из подключенной библиотеки используя префикс « имя_модуля. «. Пример: random.randint(1,15) где random — это библиотека, которую мы подключили, а randint — имя функции, которая в ней описана.

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

Вот полный пример использования инструкции import в Python 3:

import random a = random.randint(1, 15) print(a)

Использование псевдонимов — as

Некоторые модули имеют длинное и неудобное название. Для удобства и сокращения количества кода программист может заменить его на своё.

Например, если написать « import random as rand «, то вместо длинного random для обращения к функциям библиотеки можно будет использовать короткое rand .

Импорт компонентов — from

Чтобы не захламлять программу большим количеством неиспользуемых инструментов, можно подключать не весь модуль, а какую-то его часть.

Например, программист хочет использовать только одну функцию из математической библиотеки math . Если он подключит всю библиотеку, то в скрипт добавится более 40 функций, которые будут занимать место. Чтобы добавить в проект какую-то часть, используют ключевое слово from :

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

Можно подключить несколько функций сразу в одной строке. Для этого их надо перечислить через запятую.

Если после import написать символ звёздочки «*», подключится все содержимое модуля. Это считается плохим тоном, потому что может привести к совпадению имён из основного скрипта с именами из подключаемого. Но если программист уверен, что использовал уникальные названия для функций и переменных, теоретически он может использовать этот способ.

Перезагрузка библиотеки

За один сеанс модуль можно импортировать только один раз. Если программист после импорта, изменит в файле, который импортировал что-либо, а потом снова его импортирует, основная программа не будет видеть этих изменений.

Всё потому, что при импорте библиотека кешируется, когда её пытаются импортировать снова, интерпретатор Python просто использует сохранённую в кэше копию.

import my_name, time print(my_name.name) # Выведет Сергей time.sleep(10) # пауза во время которой изменяем # значение name в файле my_name.py # с Сергей на Александр import my_name print(my_name.name) # Выведет Сергей

Если всё же необходимо перезагрузить модуль, на помощью приходит функция reload() из стандартной библиотеки importlib. Перезагрузка не влияет на объекты, ссылающиеся на импортированный модуль, и позволяет реализовать динамическую перезагрузку компонентов программы.

from importlib import reload import my_name, time print(my_name.name) # Выведет Сергей time.sleep(10)# меняем значение с Сергей на Александр my_name = reload(my_name) print(my_name.name) # Выведет Александр

Подключение из другой папки

Библиотеки подключаются очень просто, когда интерпретатор Python знает, где их искать. Python ищет модули:

  • В папке исполняемого скрипта.
  • Во встроенных модулях (built-in).
  • В директориях, определённых в sys.path (также содержит переменную PYTHONPATH).

Чтобы импортировать модуль из другой папки в Python 3, можно сделать следующее:

    Добавить путь к папке с модулем с помощью команды библиотеки sys —

import sys path.insert(0, "/путь/папка_модуля") import модуль

Для того чтобы директория, содержащая файлы, определялась как пакет, в неё необходимо добавить файл __init__.py. Он показывает интерпретатору Python, что папка — это пакет с модулями.

Начиная с версии Python 3.3, добавлять файл __init__.py в директорию больше не нужно, интерпретатор Python считает все папки пакетами.

Не стоит путать понятия «пакет» и «модуль». Модуль — это отдельный файл, а пакет — это папка, в которой содержится несколько отдельных скриптов.

Источник

Работа с модулями: создание, подключение инструкциями import и from

Python 3 логотип

Модулем в Python называется любой файл с программой (да-да, все те программы, которые вы писали, можно назвать модулями). В этой статье мы поговорим о том, как создать модуль, и как подключить модуль, из стандартной библиотеки или написанный вами.

Каждая программа может импортировать модуль и получить доступ к его классам, функциям и объектам. Нужно заметить, что модуль может быть написан не только на Python, а например, на C или C++.

Подключение модуля из стандартной библиотеки

Подключить модуль можно с помощью инструкции import. К примеру, подключим модуль os для получения текущей директории:

 import указывается название модуля. Одной инструкцией можно подключить несколько модулей, хотя этого не рекомендуется делать, так как это снижает читаемость кода. Импортируем модули time и random.
 
 

Использование псевдонимов

Если название модуля слишком длинное, или оно вам не нравится по каким-то другим причинам, то для него можно создать псевдоним, с помощью ключевого слова as.

 

Инструкция from

Подключить определенные атрибуты модуля можно с помощью инструкции from. Она имеет несколько форматов:

Первый формат позволяет подключить из модуля только указанные вами атрибуты. Для длинных имен также можно назначить псевдоним, указав его после ключевого слова as.
 
 

Следует заметить, что не все атрибуты будут импортированы. Если в модуле определена переменная __all__ (список атрибутов, которые могут быть подключены), то будут подключены только атрибуты из этого списка. Если переменная __all__ не определена, то будут подключены все атрибуты, не начинающиеся с нижнего подчёркивания. Кроме того, необходимо учитывать, что импортирование всех атрибутов из модуля может нарушить пространство имен главной программы, так как переменные, имеющие одинаковые имена, будут перезаписаны.

Создание своего модуля на Python

Теперь пришло время создать свой модуль. Создадим файл mymodule.py, в которой определим какие-нибудь функции:

Теперь в этой же папке создадим другой файл, например, main.py:
Поздравляю! Вы сделали свой модуль! Напоследок отвечу ещё на пару вопросов, связанных с созданием модулей:

Как назвать модуль?

Помните, что вы (или другие люди) будут его импортировать и использовать в качестве переменной. Модуль нельзя именовать также, как и ключевое слово (их список можно посмотреть тут). Также имена модулей нельзя начинать с цифры. И не стоит называть модуль также, как какую-либо из встроенных функций. То есть, конечно, можно, но это создаст большие неудобства при его последующем использовании.

Куда поместить модуль?

Туда, где его потом можно будет найти. Пути поиска модулей указаны в переменной sys.path. В него включены текущая директория (то есть модуль можно оставить в папке с основной программой), а также директории, в которых установлен python. Кроме того, переменную sys.path можно изменять вручную, что позволяет положить модуль в любое удобное для вас место (главное, не забыть в главной программе модифицировать sys.path).

Можно ли использовать модуль как самостоятельную программу?

Можно. Однако надо помнить, что при импортировании модуля его код выполняется полностью, то есть, если программа что-то печатает, то при её импортировании это будет напечатано. Этого можно избежать, если проверять, запущен ли скрипт как программа, или импортирован. Это можно сделать с помощью переменной __name__, которая определена в любой программе, и равна "__main__", если скрипт запущен в качестве главной программы, и имя, если он импортирован. Например, mymodule.py может выглядеть вот так:

Для вставки кода на Python в комментарий заключайте его в теги

Источник

Подключение модулей в Python

Основы программирования 2.0

В любом языке программирования (ну по крайне мере в языке программирования высокого уровня) имеются так называемые “стандартные” функции, процедуры, типы данных, константы и т.п., и, если хотите, “нестандартные”, которые, однако, можно использовать. Но находятся они либо в отдельных модулях, либо в библиотеках.

Сделано это для того, чтобы не раздувать размер основного модуля. Кроме того, функции удобно группировать, и, например, математические функции обычно помещаются в модуль с именем math или подобным.

Однако, прежде чем использовать функции какого-либо модуля (кроме основного), его надо подключить к вашей программе. В разных языках это делается по разному, но в Python это делается так:

То есть мы используем ключевое (зарезервированное) слово import , затем через пробел указываем имя модуля, который надо подключить к программе. После этого (если всё пройдёт без ошибок) можно использовать функций, объекты, переменные, константы и т.п. этого модуля. Чтобы получить доступ к функции (или другому элементу) модуля, надо указать имя модуля и имя функции, разделённые точкой. Это отличается, например, от Паскаля. Потому что в Паскале модуль - это просто кусок кода, а в Python и некоторых других языках по сути модуль превращается в объект.

Пример подключения модуля и его использования:

Подключение модулей в Python

Здесь мы подключили модуль math и получили значение числа е - константы, которая объявлена в модуле math .

В Python есть некоторое количество встроенных модулей. Например, math является встроенным модулем:

Встроенный модуль Python

Вы можете это проверить, подключив модуль, напечатав его имя и нажав ENTER. Получите то, что на рисунке выше - сообщение:

built-in переводится как “встроенный”.

Однако используя лишь встроенные модули, вы далеко не уедете. Потому что вся мощь Python обеспечивается “внешними” модулями, большинство из которых разрабатываются самими программистами из сообщества Python или вообще одиночками-фанатиками.

Внешний модуль вы не сможете просто так подключить, потому что Python ничего о нём не знает. Для него это всё равно, что какое-то неизвестное слово. И вы, даже если точно знаете, что где-то существует модуль с именем mybestunit , при попытке подключить его получите сообщение об ошибке:

Ошибка при подключении модуля в Python

Не встроенный модуль перед подключением надо установить. Делается это через командную строку, и это будет описано в отдельной статье. Но если такой модуль у вас уже установлен, то вы можете также напечатать его имя и нажать ENTER. И получите примерно следующее:

Подключение внешнего модуля в Python

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

На этом пока всё. Подписывайтесь на новости, чтобы ничего не пропустить (ссылки внизу).

Источник

Читайте также:  Язык javascript объект string
Оцените статью