Выбор ответа Senior Модули, пакеты и окружения обновлено

Порядок поиска при импорте

Вопрос

Что Python проверяет первым при import json?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: sys.modules, кеш загруженных модулей. Сначала проверяется sys.modules: если модуль уже загружен, его объект возвращается сразу.

Варианты ответа

  1. Каталог текущего скрипта, он первый в sys.path
  2. site-packages текущего окружения
  3. sys.modules, кеш загруженных модулейправильный ответ
  4. Переменную PYTHONPATH, она важнее всего

Разбор

Сначала проверяется sys.modules: если модуль уже загружен, его объект возвращается сразу. Если нет, по очереди спрашиваются искатели из sys.meta_path: встроенные модули, замороженные, затем поиск по путям sys.path (каталог скрипта, PYTHONPATH, стандартная библиотека, site-packages). Подмена модуля в sys.modules поэтому работает и для моков в тестах.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме