Какие различия делает __init__ с каталогом? - PullRequest
0 голосов
/ 18 октября 2011

В python каталог, содержащий один или несколько модулей, иногда имеет __init__.py, так что каталог можно рассматривать как python package, это правильно? Какие различия делает __init__? (также другой вопрос, является ли модуль python просто файлом кода Python со связанным и, возможно, независимым (для других файлов) набором классов, функций и переменных?)

Ответы [ 2 ]

4 голосов
/ 18 октября 2011

Вот объяснение , почему требуется __init__.py:

Файлы __init__.py необходимы, чтобы Python рассматривал каталоги как содержащие пакеты;это сделано для предотвращения непреднамеренного скрытия действительными модулями каталогов с общим именем, таким как string, которые позже появляются в пути поиска модулей.В простейшем случае __init__.py может быть просто пустым файлом, но он также может выполнить код инициализации для пакета или установить переменную __all__, как описано ниже.

Как я только чторекомендуется для другого автора, учебник по модулям довольно информативен.

2 голосов
/ 18 октября 2011

Кроме того, содержимое __init__.py становится содержимым пакета, когда рассматривается как модуль, то есть содержимое somepackage/__init__.py будет найдено в dir(somepackage) при import somepackage.

.Сами модули могут быть кодом Python, специально созданным кодом C , или искусственной конструкцией , внедренной исполняемым файлом, загружающим виртуальную машину Python.

...