Подтвердить что ты не робот

В чем разница между __init__.py и __main__.py?

Я знаю два вопроса о файлах __init__.py и __main__.py.

Что такое __init__.py для?

Что такое __main__.py?

Но я не понимаю разницу между ними.

4b9b3361

Ответ 1

__ init __. py запускается при импорте пакета в запущенную программу python. Например, import idlelib внутри программы запускает idlelib/__init__.py, что ничего не делает, поскольку его единственная цель - пометить каталог idlelib как пакет. С другой стороны, tkinter/__init__.py содержит большую часть кода tkinter и определяет все классы виджетов.

__ main __. py запускается как "__main__" при запуске пакета в качестве основной программы. Например, python -m idlelib в командной строке запускает idlelib/__main__.py, который запускает Idle. Аналогично, python -m tkinter работает tkinter/__main__.py, у которого есть эта строка:

from . import _test as main

В этом контексте . - tkinter, поэтому импорт . импортирует tkinter, который работает tkinter/__init__.py. _test - это функция, определенная внутри этого файла. Поэтому вызов main() (следующая строка) имеет тот же эффект, что и запуск python -m tkinter.__init__ в командной строке.

Ответ 2

__init__.py, среди прочего, называет каталог как каталог python и позволяет устанавливать переменные на уровне пакета.

__main__.py, помимо прочего, запускается, если вы пытаетесь запустить сжатую группу файлов python. __main__.py позволяет выполнять пакеты.

Оба этих ответа были получены из ответов, которые вы связывали. Есть ли что-то еще, что вы не поняли об этих вещах?