python import recursion

Жалоба
Вопрос

Например есть модуль logger и модуль config.Модулю logger нужен модуль config чтобы получить path_to_log_fileМодулю config нужен модуль logger чтобы писать в лог какие-то сообщения, скажем ошибки.Если в модуле logger вписать import config, а в config вписать import logger то мы само собой получим рекурсию.Какие мысли есть по поводу решения этой задачи?

В процессе 1
программирование 4 года назад 2 Ответов 85 Просмотров 0

Ответов ( 2 )

  1. Задачи тут никакой нет. Рекурсии не будет. Изучайте литературу по Python.Модули загружаются и запускаются первой, и только первой инструкцией importили from. Реализовано такое поведение преднамеренно, потому что импор-тирование – это дорогостоящая операция и интерпретатор выполняет ее всегоодин раз за все время работы. Последующие операции импорта просто получа-ют объект уже загруженного модуля....Вторая и все последующие операции импортирования не приводят к перезапу-ску программного кода модуля – они просто получают объект модуля из вну-тренней таблицы модулей интерпретатора.Лутц М.Изучаем Python, 4-е издание.

    0
    4 года назад
    Ответить

    Поддерживаю предыдущий ответ. И добавлю:1) В модуле config не должно быть ничего, кроме настроек.2) У питона есть готовое решение для логирования, вместо выдумывания своих велосипедов лучше потратить немножко времени, чтобы разобраться с ним.3) Даже если вы привели всего лишь гипотетический пример — все-равно вам стоит пересмотреть свой подход к разделению логики между модулями. В идеале между модулями связности не должно быть _вообще_. Фишка модулей как раз в том, что они должны быть максимально независимы (от чего бы то ни было).

Ваш ответ