Когда Python хочет импортировать модуль, он сначала будет выглядеть в sys.modules
. Но так как пары словаря-значения словаря не в фиксированном порядке, как вы можете знать наверняка, какой из двух идентично названных модулей в sys.modules
будет импортирован первым?Почему sys.modules выбрали словарь?
1
A
ответ
7
Поскольку это отображение, может быть be нет идентично названных модулей в sys.modules
.
Точка зрения. Если используется оператор import foo
и sys.modules['foo']
, этот модуль возвращается. Нет доступа к файлам, не требуется код верхнего уровня для этого модуля.
Если foo
нет, то sys.path
определяет, где находится foo
. Это значение представляет собой список, поэтому он имеет порядок, и поиск модуля foo
проводится в соответствии с этим заказом.
Смежные вопросы
- 1. Почему вы выбрали спецификацию?
- 2. Почему в модулях sys.modules есть фиктивные модули?
- 3. Почему модуль pprint для Python проверяет `` locale 'в sys.modules`?
- 4. Почему «данные» не словарь
- 5. Почему словарь не детерминирован?
- 6. Почему мой словарь пуст?
- 7. Как отладить запись sys.modules, которая перезаписывается?
- 8. Имеет ли sys.modules какой-либо конкретный заказ?
- 9. Изменение стратегии импорта модуля путем взлома sys.modules
- 10. Почему вы выбрали ASP.NET MVC через SPA + ASP.NET WebAPI?
- 11. Почему дизайнеры Java выбрали интерфейсы и одно наследование?
- 12. HBase: Почему вы выбрали блоки до достижения максимального размера BlockCache?
- 13. Почему вы выбрали стиль в мобильном сафари, отличном от стиля?
- 14. Почему Convert.ToString (null) возвращает другое значение, если вы выбрали нуль?
- 15. Почему мой json не словарь?
- 16. Почему XmlSerializer не поддерживает словарь?
- 17. Почему пустой словарь больше 1?
- 18. Почему неправильно добавлен словарь пользователя?
- 19. Почему мой словарь очень медленный?
- 20. Почему это не читает словарь?
- 21. Почему мой словарь внутри списка?
- 22. Почему TryGetValue освобождает мой словарь?
- 23. Почему вложенный словарь неправильно заполнен?
- 24. Python swapping out sys.modules не работает как интуитивно понятный
- 25. Получение показаний, которые они выбрали
- 26. Какое исключение выбрали из сеттера?
- 27. Флажок CSHTML не изменяется, когда его выбрали.
- 28. словарь значение другой словарь
- 29. Динамическое создание модуля в sys.modules вызывает SYS не стать None
- 30. Python словарь в словарь
'>>> dict = {'a': 1, 'b': 2, 'b': 3}' then '>>> dict' возвращает' {'a': 1, 'b': 3 } '. Я не знаю, что это связано с моим ложным предположением, что я получу ошибку с момента, когда я назначил словарь, если ключи были идентичными. Я никогда не заходил достаточно далеко, чтобы снова распечатать настоящий словарь. – Bentley4
@ Bentley4: Даже если это _did_ разрешить несколько экземпляров ... как порядок поможет вам узнать, какой из них? Вы знаете, что хотите «один из модулей с именем« foo »и что их два, и даже тот, который был сначала импортирован ... но не зная, хотите ли вы тот, который был импортирован первым, или тот, который был был импортирован второй, как это поможет? – abarnert
Btw, ссылка [Python reference] (http://docs.python.org/2.7/reference/simple_stmts.html#the-import-statement) говорит, что после поиска '' sys.modules '' sys.meta_path', запрашиваются только тогда неявно определенные искатели (среди них 'sys.path', но не ясно, в каком порядке) – Bentley4