Что такое импорт в Python?
Содержание
- Что такое импорт
- Как Python использует модуль
- Основные варианты импорта
- Импорт собственного класса
- Зачем разбивать код на модули
- Пакеты
- Практика
Что такое импорт
Импорт - это механизм Python, который позволяет подключать код из других файлов, модулей и библиотек. Благодаря импорту мы можем использовать готовые функции, классы и переменные вместо того, чтобы писать все с нуля.
Пример:
import math
print(math.sqrt(25))Здесь import math подключает модуль math, а math.sqrt(25) вызывает функцию квадратного корня из этого модуля.
Импорт особенно важен в ООП, потому что классы часто выносят в отдельные файлы, а затем подключают там, где они нужны.
Как Python использует модуль
Когда Python встречает import, он:
- ищет указанный модуль;
- загружает его содержимое;
- делает функции, классы и переменные доступными в текущем файле;
- позволяет обращаться к ним через имя модуля или напрямую, в зависимости от способа импорта.
Модуль - это обычный .py файл. Например, файл calculator.py уже может быть модулем.
Основные варианты импорта
Импорт всего модуля
import math
print(math.pi)
print(math.sqrt(36))Плюс: видно, откуда пришла функция. Минус: нужно каждый раз писать имя модуля.
Импорт конкретных объектов
from math import sqrt, pi
print(sqrt(49))
print(pi)Плюс: короче запись. Минус: если импортов много, сложнее понять источник имени.
Импорт с псевдонимом
import math as m
print(m.sqrt(81))Псевдонимы часто используют для длинных названий библиотек.
Импорт всего содержимого
from math import *
print(sqrt(64))Такой вариант лучше избегать. Он засоряет пространство имен: становится непонятно, откуда пришли функции, и можно случайно перекрыть уже существующие имена.
Импорт собственного класса
Классы мы научились писать в 03.04 - ООП Классы — теперь научимся переиспользовать их между файлами.
Представим, что есть файл my_module.py.
# Файл: my_module.py
class Calculator:
def add(self, a, b):
return a + b
def multiply(self, a, b):
return a * bТеперь этот класс можно использовать в другом файле.
# Файл: main.py
from my_module import Calculator
calc = Calculator()
print(calc.add(4, 7))
print(calc.multiply(3, 5))Такой подход помогает держать код организованным: класс находится в одном файле, а использование - в другом.
Зачем разбивать код на модули
Импорт помогает:
- переиспользовать уже написанный код;
- разделять большую программу на понятные части;
- хранить классы и функции в отдельных файлах;
- быстрее находить нужную логику;
- подключать встроенные и сторонние библиотеки.
Если весь код лежит в одном файле, проект быстро становится трудно читать. Модули позволяют разложить программу по смысловым блокам.
Пакеты
Пакет - это папка с модулями. Обычно внутри есть файл __init__.py, который показывает Python, что папку можно воспринимать как пакет.
Пример структуры:
my_project/
├── main.py
└── shop_package/
├── __init__.py
├── store.py
└── tools.py
main.py- основной файл программы;shop_package- пакет;store.pyиtools.py- модули внутри пакета;__init__.pyможет быть пустым или содержать код инициализации.
Импорт модуля из пакета
from shop_package import store
store.show_catalog()Импорт конкретного класса или функции
from shop_package.store import SupplyStore
store = SupplyStore()Импорт из нескольких модулей
from shop_package.store import SupplyStore
from shop_package.tools import format_price, check_stockПример пакета с магазином инструментов
Шаг 1: структура проекта
workshop_project/
├── main.py
└── workshop_store/
├── __init__.py
├── store.py
└── helpers.py
Шаг 2: модуль store.py
class WorkshopStore:
def __init__(self):
self.items = {
"Отвертка": 250,
"Набор ключей": 1200,
"Измерительная рулетка": 450,
}
def show_items(self):
print("Каталог магазина:")
for item, price in self.items.items():
print(f"{item}: {price} руб.")
def buy_item(self, item_name):
if item_name in self.items:
print(f"Вы купили {item_name} за {self.items[item_name]} руб.")
else:
print("Такого товара нет в каталоге")Шаг 3: модуль helpers.py
def format_price(price):
return f"{price} руб."
def check_budget(price, budget):
if budget >= price:
print("Бюджета хватает")
else:
print("Бюджета недостаточно")Шаг 4: файл __init__.py
from .store import WorkshopStore
from .helpers import format_price, check_budgetПосле этого можно импортировать нужные объекты прямо из пакета.
Шаг 5: использование в main.py
from workshop_store import WorkshopStore, check_budget
store = WorkshopStore()
store.show_items()
store.buy_item("Набор ключей")
store.buy_item("Паяльная станция")
check_budget(1200, 1500)
check_budget(450, 300)Практика
-
Задание 1: импорт собственного класса
Создайте файл
academy_store.pyс классомAcademyStore.# Файл: academy_store.py class AcademyStore: def __init__(self): self.items = { "Тетрадь": 120, "Маркер": 90, "Планер": 350, } def show_items(self): for item, price in self.items.items(): print(f"{item}: {price} руб.") def buy_item(self, item_name): if item_name in self.items: print(f"Куплено: {item_name}") else: print("Товар не найден")Создайте
main.pyи импортируйте класс.from academy_store import AcademyStore store = AcademyStore() store.show_items() store.buy_item("Маркер") store.buy_item("Рюкзак") -
Задание 2: несколько функций в модуле
Создайте файл
text_tools.pyс функциями:count_letters(text)- возвращает длину строки;to_upper(text)- возвращает строку в верхнем регистре;has_word(text, word)- проверяет, есть ли слово в тексте.
В
main.pyимпортируйте только две функции и проверьте их на своих значениях. -
Задание 3: пакет
Создайте пакет
finance_toolsсо структурой:finance_tools/ ├── __init__.py ├── taxes.py └── currency.pyВ
taxes.pyсоздайте функциюadd_tax(price, rate). Вcurrency.py- функциюrub_to_usd(amount, rate).В
__init__.pyимпортируйте обе функции, а затем используйте их вmain.py.
Короткий итог
Импорт подключает код из других файлов и библиотек. Модуль - это .py файл, пакет - папка с модулями. В небольших программах импорт помогает не повторяться, а в больших проектах делает структуру понятной: классы, функции и вспомогательные инструменты можно хранить там, где им логически место.
⬅️ Назад: 03.06 - Методы классов | Далее: 03.08 - Подготовка к Экзамену ООП ➡️ Модуль: 03 - MOC