Я использую Python 3.7.3
Предположим, я назвал свой скрипт 'string.py' и импортировал его в другой скрипт, он перекрывает встроенный модуль 'string'
Предположим,Я называю свой скрипт «math.py» и импортирую его в другой скрипт, встроенный «math» перекрывает мой собственный
Поведение импорта скриптов с такими именами, как встроенные модули, зависит от того, как я их называю.
Не могли бы вы объяснить мне такое поведение
Некоторые имена модулей, которые повлияли: hashlib, string, calendar
Имена модулей, которые не влияют: математика, cmath, os
С realpython.com :
Первое, что сделает Python, - это поиск имени abc в sys.modules. Это кэш всех модулей, которые были ранее импортированы. Если имя не найдено в кеше модуля, Python продолжит поиск по списку встроенных модулей. Это модули, которые предустановлены с Python и находятся в стандартной библиотеке Python. Если имя все еще не найдено во встроенных модулях, Python затем ищет его в списке каталогов, определенных sys.path.
Из "Обучающего Python" Майкла Лутца:
Грубо говоря, путь поиска модулей Python состоит из конкатенации этих основных компонентов, некоторые из которых предустановлены для вас, а некоторые вы можете настроить, чтобы указать Python, где искать:
Домашний каталог программы
Каталоги PYTHONPATH (если установлены)
Каталоги стандартных библиотек
Содержимое любых файлов .pth (если есть)
Сайт-пакет, содержащий сторонние расширения
Так какой из них сейчас правильный?