Задачи на модули в Python с подробными примерами решений
Задачи на модули в Python: импорт и использование
Как эффективно импортировать модуль и использовать его функции?
Основной и наиболее распространённый способ - импорт всего модуля с помощью инструкции import module. После этого функции и атрибуты вызываются через точку: module.function(). Это делает код читаемым, избегает конфликтов имён и явно указывает источник функции.
import math
result = math.sqrt(25)
print(result)алгоритм решения задачи python (алгоритм решения задачи на python)
5.0
базовые задачи python (базовые задачи python)
Типичные ошибки:
NameError- если забыть импортировать модуль.AttributeError- при неправильном имени функции (например,math.sqr).- Конфликт имён, если модуль имеет функции с такими же именами как в коде (решается импортом с псевдонимом).
Как импортировать только нужные функции из модуля?
Инструкция from module import function позволяет импортировать конкретные имена. Это удобно, когда модуль большой, а нужны лишь отдельные функции.
from math import sqrt, pi
print(sqrt(16))
print(pi)задачи для обучения python (задачи для обучения python)
4.0 3.141592653589793
задачи на классы в python (задачи на классы в python)
Проблема:
При таком импорте может возникнуть конфликт имён, если в текущей области видимости уже определена переменная или функция с тем же именем. Рекомендуется использовать такой импорт только для небольших проектов или когда имена уникальны.
Как импортировать модуль с сокращённым именем (псевдонимом)?
Для удобства часто используют псевдоним через import module as alias. Это сокращает код и помогает избежать конфликтов.
import datetime as dt
now = dt.datetime.now()
print(now)множество python задачи (задачи на множества в python)
2025-03-26 15:30:00.123456
задачи на модули python (задачи на модули в python)
Ошибки:
- Забыть, что используется псевдоним, и обратиться к исходному имени модуля -
NameError. - При импорте с псевдонимом в Jupyter Notebook повторный импорт может не обновить модуль, если он изменён (требуется
import importlib; importlib.reload(module)).
Как создать и импортировать собственный модуль?
Собственный модуль - это обычный файл .py с расширением. Поместите его в ту же папку, что и основной скрипт, или добавьте путь в sys.path.
# файл mymodule.py
def hello(name):
return f"Привет, {name}!"
# основной скрипт
import mymodule
print(mymodule.hello("Анна"))задачи на операторы в python (задачи на операторы в python)
Привет, Анна!
задачи на последовательности python (задачи на последовательности в python)
Типичные ошибки:
ModuleNotFoundError- если модуль не найден. Проверьте путь и наличие файла.- Циклический импорт - когда два модуля импортируют друг друга. Решается переносом импорта внутрь функций или реструктуризацией кода.
- Изменения в модуле не применяются, если он уже импортирован (в сессии интерпретатора). Используйте
importlib.reload()после изменений.
Как использовать конструкцию if __name__ == "__main__" для защиты кода?
Этот блок выполняется только при запуске файла как основного скрипта, но не при импорте. Он позволяет отделить исполняемый код от определений функций.
# module.py
def add(a, b):
return a + b
if __name__ == "__main__":
print("Тест: 2+3 =", add(2, 3))задачи на списки python (задачи на списки в python)
При импорте module - ничего не выводится. При запуске python module.py: Тест: 2+3 = 5
пробелы python задача (задача на пробелы в строке python)
Ошибка:
Если забыть эту конструкцию, при импорте модуля выполнится весь код, что может привести к нежелательным эффектам (например, вывод логов, запрос ввода).
Как работать со встроенными модулями для случайных чисел (random)?
Модуль random предоставляет множество функций для генерации случайных чисел и выбора элементов.
import random
dice = random.randint(1, 6)
element = random.choice(['яблоко', 'банан', 'вишня'])
deck = list(range(10))
random.shuffle(deck)
print(f"Кубик: {dice}")
print(f"Случайный фрукт: {element}")
print(f"Перемешанный список: {deck[:5]}")задачи на if else python (задачи на условные операторы if-else в python)
Кубик: 4 Случайный фрукт: банан Перемешанный список: [7, 2, 9, 0, 3]
задачи на работу с файлами python (задачи на работу с файлами в python)
Частая ошибка:
random.randint(1,6) - границы включены. Но если случайно использовать random.random() (возвращает float от 0 до 1), то нужно преобразование. Путаница с функциями randrange, uniform.
Как импортировать модуль из пакета (подмодуль)?
Пакет - это папка с файлом __init__.py. Подмодули импортируются через точку.
# структура: package/submodule.py
def say_hi():
return "Привет из подмодуля"
# импорт:
from package import submodule
print(submodule.say_hi())
# или:
import package.submodule as sub
print(sub.say_hi())задачи на функции в python (задачи на функции в python)
Привет из подмодуля Привет из подмодуля
Проблема:
Если забыть создать файл __init__.py (даже пустой), Python не распознает папку как пакет (для версий до 3.3) или может работать некорректно. Для Python 3.3+ __init__.py не обязателен, но рекомендуется для совместимости.
Расширенные примеры работы с модулями Python
Пример 1. Динамический импорт модуля через importlib
Иногда имя модуля заранее неизвестно (например, задаётся пользователем). Используется importlib.import_module().
import importlib
module_name = "math" # может быть получено, например, из input()
mod = importlib.import_module(module_name)
print(mod.sqrt(9))
3.0
Пример 2. Перезагрузка модуля после его изменения (reload)
В интерактивной сессии (Jupyter, IPython) модуль не обновляется автоматически. Принудительная перезагрузка:
# Предположим, файл mymodule.py изменён
import mymodule
print(mymodule.hello("Мир")) # старая версия
import importlib
importlib.reload(mymodule)
print(mymodule.hello("Мир")) # новая версия
Привет, Мир! Привет, Мир! (если функция не менялась)
Пример 3. Импорт всех имён из модуля (звёздочка) и её риски
Конструкция from module import * импортирует все имена из модуля (кроме тех, что начинаются с подчёркивания). Это может затереть существующие переменные.
from math import *
print(sin(0))
print(cos(0))
0.0 1.0
Проблема:
Такой импорт не рекомендуется в больших проектах, так как сложно отследить, откуда взялась функция. В модуле может быть определена переменная pi, которая переопределит вашу.
Пример 4. Использование модуля sys для работы с аргументами командной строки
Модуль sys предоставляет доступ к аргументам скрипта (sys.argv). Первый элемент (индекс 0) - имя скрипта.
# script.py
import sys
if len(sys.argv) > 1:
print("Привет, " + sys.argv[1])
else:
print("Запуск: python script.py <имя>")
# Вызов: python script.py Анна
# Результат: Привет, Анна
Привет, Анна
Пример 5. Создание пакета с несколькими модулями и __init__.py
Структура пакета:
mypackage/
__init__.py
module1.py
module2.py
Содержимое module1.py:
def foo():
return "foo from module1"
Импорт в основном скрипте:
from mypackage import module1
print(module1.foo())
# или через __init__.py, который может импортировать подмодули:
# __init__.py:
# from . import module1, module2
# тогда import mypackage даёт доступ к mypackage.module1.foo()
foo from module1
Пример 6. Обработка ошибки импорта с try/except
Иногда модуль может отсутствовать. Обрабатывайте это, чтобы не прерывать программу.
try:
import numpy as np
print("NumPy импортирован")
except ImportError:
print("Модуль NumPy не установлен, используем стандартные средства")
import math as np # подмена
Модуль NumPy не установлен, используем стандартные средства
Пример 7. Работа с модулем datetime: форматирование и парсинг дат
from datetime import datetime, timedelta
now = datetime.now()
print("Текущая дата:", now.strftime("%Y-%m-%d %H:%M:%S"))
tomorrow = now + timedelta(days=1)
print("Завтра:", tomorrow.strftime("%d.%m.%Y"))
# Парсинг строки
date_str = "2025-12-31"
date_obj = datetime.strptime(date_str, "%Y-%m-%d")
print("Парсеная дата:", date_obj)
Текущая дата: 2025-03-26 15:30:00 Завтра: 27.03.2025 Парсеная дата: 2025-12-31 00:00:00
Пример 8. Использование модуля os для работы с файловой системой
import os
current_dir = os.getcwd()
print("Текущая директория:", current_dir)
files = os.listdir('.')
print("Файлы в папке:", files[:5])
# Создание папки
if not os.path.exists('test_folder'):
os.mkdir('test_folder')
print("Папка создана")
# Удаление (осторожно!)
# os.rmdir('test_folder')
Текущая директория: /home/user/project Файлы в папке: ['main.py', 'utils.py', 'README.md'] Папка создана