1. Главная
  2. Библиотека
  3. Программирование
  4. Представь, что у тебя есть несколько Python-модулей, ка...
Разбор задачи

Представь, что у тебя есть несколько Python-модулей, каждый из которых хранит внутри себя список чисел в переменной NUMBERS. Админ сервиса хочет быстро считать сумму всех чисел из такого модуля, зная только его имя (строку, как в обычных import).

  • Предмет: Программирование
  • Автор: Кэмп
  • #Языки программирования (C++, Java, Python и др.)
  • #Модульное и компонентное программирование
Представь, что у тебя есть несколько Python-модулей, каждый из которых хранит внутри себя список чисел в переменной NUMBERS. Админ сервиса хочет быстро считать сумму всех чисел из такого модуля, зная только его имя (строку, как в обычных import).

Условие:

Представь, что у тебя есть несколько Python-модулей, каждый из которых хранит внутри себя список чисел в переменной NUMBERS.

Админ сервиса хочет быстро считать сумму всех чисел из такого модуля, зная только его имя (строку, как в обычных import).

Например, у тебя может быть модуль:

# stats_january.py NUMBERS = [10, 20, 30]
и другой:

# stats_february.py NUMBERS = [5.5, 7.5]
Нужно написать функцию, которая по имени модуля:

импортирует его,
достаёт из него NUMBERS,
проверяет корректность данных,
возвращает сумму.
Задача специально завязана на понимание модулей и импорта: по строке имени нужно получить объект модуля и работать с его содержимым.

Реализовать функцию load_and_sum_numbers(module_name), которая:

Принимает один параметр module_name — строка с именем модуля (например, "stats_january").
Импортирует модуль по этому имени (как при обычном import, только динамически).
Извлекает у модуля атрибут NUMBERS.
Проверяет, что NUMBERS — итерируемый объект, состоящий только из чисел (int или float).
Возвращает сумму всех чисел в NUMBERS как число (int или float — неважно, что получится естественным образом).
Исключения:

Если модуля с таким именем не существует — должно возникнуть стандартное ImportError (можно не ловить, просто позволить ему подняться).
Если в модуле нет атрибута NUMBERS — должно возникнуть стандартное AttributeError.
Если в NUMBERS встречается элемент, который не число (int или float) — нужно выбросить ValueError.

Решение:

Для решения задачи мы создадим функцию load_and_sum_numbers(module_name), которая будет динамически импортировать модуль по его имени, извлекать из него список чисел NUMBERS, проверять его корректность и возвращать сумму этих чисел. Давайте разберем реализацию функции шаг за шагом.

Шаг 1: Импорт модуля


Для динамического импорта модуля в Python мы можем использовать функцию `importlib.import_module`. Это позволит нам загрузить модуль по его имени, переданному в виде строки.

### Шаг 2: Извлечение атрибута NUMBERS

После успешного импо...

Внутри — полный разбор, аргументация, алгоритм решения, частые ошибки и как отвечать на каверзные вопросы препода, если спросит

Попробуй решить по шагам

Попробуй один шаг и продолжи в режиме обучения или посмотри готовое решение

Какой стандартный модуль Python используется для динамического импорта других модулей по их строковому имени?

Что нужно знать по теме:

Что нужно знать по теме

Алгоритм решения

Топ 3 ошибок

Что спросит препод

Выбери предмет