2017-02-14 2 views
1

Я знаю только два имени файла, которые будут интерпретированы по значению: __init__.py и __main__.pyКакие еще специальные модули (файлы) существуют на уровне пакета?

__init__.py: Файл инициализации для пакета. Выполняется, когда пакет сначала импортируется/импортируется. Если этот файл присутствует, то каталог считается пакетом (там также существуют пакеты пространств имен), которые не имеют модулей инициализации)

__main__.py: Основная точка входа для пакета. Этот файл выполняется при запуске пакета из командной строки. (например: python -m PackageName)

Какие еще файлы могут существовать и что они делают?

+0

Я не знаю, есть ли * в настоящее время * любые другие, но я бы предположил, что все, что соответствует '__ * __. Py', зарезервировано для использования самим Python, и вы не должны пытаться создать файл с таким именем. – chepner

+0

Но эти файлы dunder * предназначены для создания. Часть пакета .. – Inversus

+0

Возможно, их в настоящее время нет. Я бы принял окончательное доказательство этого в качестве ответа. – Inversus

ответ

4

Я не верю, что есть определенные доказательства только __main__ и __init__, являющихся единственными специальными файлами, которые определенно не видели никакой документации для него. Но, есть достойный способ утверждать, что вероятность тех, будучи единственными высока путем поиска dunders в file finder for the CPython repo.

только __init__.py «ы и __main__.py» с; Точка @ chepner также подчеркивается единственной другой стороной: __future__.py, другие использования __*__.py действительно не должны использоваться, поскольку это может противоречить некоторому будущему файлу Python.

Поскольку у меня был источник, grepping для "__.*__.py" во всех файлах не дал никаких других результатов, кроме вышеупомянутого трио.

+1

Давайте продолжим обсуждение в чате (http://chat.stackoverflow.com/rooms/135691/discussion-between-jim-fasarakis-hilliard-and-inversus). –

Смежные вопросы