84 подписчика

Как использовать import в Python

592 прочитали

import в Python
import в Python

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

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

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

Импорт кода в Python делается через ключевое слово import и название модуля.

Импорт модуля random и вывод результата работы метода random внутри него
Импорт модуля random и вывод результата работы метода random внутри него

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

Однако, это не всегда удобно и часто возникает ситуация когда нам нужен доступ не ко всем методам модуля, а только к какому-то одному, и вот тут нам на помощь приходит импорт через from.

Импортируем метод random из модуля random и используем его напрямую
Импортируем метод random из модуля random и используем его напрямую

Тут мы уже можем использовать непосредственно имя метода random который мы импортировали, без необходимости указывать дополнительно ещё и модуль в котором он находится.

Но, что же делать если так получилось что в крупном проекте у нас образовалось несколько модулей с одинаковыми названиями. Такое может произойти, кроме того могут появиться методы с одинаковыми именами или классы. И для того чтобы нам не пришлось бежать и рефакторить все имена модулей или методов в проекте можно воспользоваться конструкцией as.

Иморт модуля random и иморт метода random под псевдонимом rnd
Иморт модуля random и иморт метода random под псевдонимом rnd

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

Так же, стоит отметить что можно делать импорт нескольких модулей на одной строке, но это не является хорошей практикой.

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

Однако, в случае с from этот подход считается допустимым, если кнечно вы не собираетесь перечислять весь код модуля, тогда, вероятно, проще импортировать его целиком.

Иморт нескольких методов через from на одной строке
Иморт нескольких методов через from на одной строке

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

Импорт всего содержимого модуля через *
Импорт всего содержимого модуля через *

Однако, это тоже является плохой практикой так как в случае колизии имён будет сложно понять что и откуда перекрывает какие имена методов или классов. Старайтесь делать ваш код понятным.

Если хотите прокачаться в Python с нуля, то приглашаю на свой авторский курс Python: Быстрый старт.

Другие варианты импорта и тонкости организации кода рассмотрены мною в видео:

Успехов!

Загляните и в другие статьи:

Что делает if __name__ == "__main__" в Python.

Рекурсия в программировании простыми словами