python foo.py
; в этом случае foo.py
просто выполняется.Однако, можно также использовать
python -m foo
. Если foo
— это не пакет, то foo.py
ищется в sys.path
и выполняется. Если это пакет, то Python сначала выполняет foo/__init__.py
, а затем foo/__main__.py
. Обратите внимание, что во время выполнения __init__.py
значение __name__
равно foo
, но во время выполнения __main__.py
оно равно __main__
.Можно также запустить Python с каталогом:
python dir/
или даже python dir.zip
. В этом случае Python ищет dir/__main__.py
и выполняет его, если находит.Пример:
$ ls foo
__init__.py __main__.py
$ cat foo/__init__.py
print(__name__)
$ cat foo/__main__.py
print(__name__)
$ python -m foo
foo
__main__
$ python foo/
__main__
$ python foo/__init__.py
__main__
👉@BookPython