циклический импорт: Понимание поведения в Python
в сфере импорта Python, сталкиваясь с ситуациями, когда модули пытаются импортировать друг друга, может привести к загадению результатов. Эта статья углубляется в сложности взаимного и кругового (циклического) импорта в питоне, объясняя их тонкости и предоставляя реальные примеры, чтобы проиллюстрировать их поведение.
] Что происходит с взаимным импортом? Если оператор Import используется без указания конкретных атрибутов или подмодулей (т.е. импорт), оба модуля успешно загружают и могут получить доступ к друг другу без проблем. Рассмотрим следующий сценарий: Модуль A Импортирует символ из модуля B, который, в свою очередь, импортирует символ из модуля A. Эта циркулярная зависимость создает ситуацию, когда каждый модуль требует, чтобы другой был полностью загружен до того, как он может завершить свой собственный импорт. исключение. Основная причина состоит в том, что интерпретатор пытается рекурсивно импортировать один и тот же модуль, что приводит к переполнению стека.
нефатальный круглый импорт
, несмотря на вышеупомянутые проблемы, существуют сценарии, в которых циркулярный импорт может содействовать, как и в примерах. Эти исключения обычно включают комбинации импорта верхнего уровня, относительного импорта и импорта конкретных атрибутов, а не целых модулей.
Заключение
, в то время как круговые импорты в Python могут быть внутренне проблематичными, понимание их подобныхсти и использование соответствующих стратегии импорта может помочь в создании этих сил. Придерживаясь этих руководящих принципов, можно использовать круговой импорт для достижения желаемой функциональности без столкновения с какими -либо ловушками. ]
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3