Это пример программы, которую я написал, чтобы проверить, является ли число простым или нет.
def is_prime(x):
y=0
if x<=1:
return False
elif x == 2:
return True
elif x%2==0:
return False
else:
root = int(x**.5)+2
for i in xrange (2,root):
if x%i==0:
return False
y=1
if y==0:
return True
Часто программа Python запускается путем именования файла .py в командной строке:
$ python my_program.py
Вы также можете создать каталог или zipfile, полный кода, и включить __main__.py
. Затем вы можете просто назвать каталог или zipfile в командной строке, и он автоматически выполнит __main__.py
:
$ python my_program_dir
$ python my_program.zip
# Or, if the program is accessible as a module
$ python -m my_program
. Вы сами должны решить, может ли ваше приложение быть полезным, например, это.
Вы создаете __main__.py
в yourpackage
, чтобы сделать его исполняемым как:
$ python -m yourpackage
Что представляет собой файл
blockquote>__main__.py
для?При создании модуля Python обычно используется модуль, выполняющий некоторые функции (обычно содержащиеся в
main
функция) при запуске в качестве точки входа программы. Обычно это делается со следующей общей идиомой, расположенной в нижней части большинства файлов Python:if __name__ == '__main__': # execute only if run as the entry point into the program main()
Вы можете получить ту же семантику для пакета Python с
__main__.py
. Это приглашение оболочки linux,$
, если у вас нет Bash (или другой оболочки Posix) в Windows, просто создайте эти файлы наdemo/__<init/main>__.py with contents in between the
EOF`s:$ mkdir demo $ cat > demo/__init__.py << EOF print('demo/__init__.py executed') def main(): print('main executed') EOF $ cat > demo/__main__.py << EOF print('demo/__main__.py executed') from __init__ import main main() EOF
(In в оболочке Posix / Bash вы можете сделать это без использования
<< EOF
s и окончанияEOF
s, введя Ctrl-D, символ конца файла в конце каждой команды cat)И теперь:
$ python demo demo/__main__.py executed demo/__init__.py executed main executed
Вы можете получить это из документа. В документации говорится:
__main__
- Сценарий верхнего уровня
'__main__'
- это имя области, выполняется код уровня. Модуль__name__
устанавливается равным'__main__'
при чтении со стандартного ввода, сценария или из интерактивного приглашения.Модуль может узнать, работает ли он в основной области, проверяя его собственный
__name__
, который допускает общую идиому для условного выполнения кода в модуле, когда он запускается как сценарий или сpython -m
, но не когда он импортируется:if __name__ == '__main__': # execute only if run as a script main()
Для пакета , тот же эффект может быть достигнут путем включения модуля
blockquote>__main__.py
, содержимое которого будет выполняться, когда модуль будет работать с-m
.Zipped
Вы также можете упаковать это в один файл и запустить его из командной строки, как это, но обратите внимание, что zipped-пакеты не могут выполнять подпакеты или подмодули в качестве точки входа:
$ python -m zipfile -c demozip demo/* $ python demozip demo/__main__.py executed demo/__init__.py executed main() executed
__main__.py
используется для программ python в zip-файлах. Файл __main__.py
будет запущен при запуске zip-файла. Например, если zip-файл был таким:
test.zip
__main__.py
, а содержимое __main__.py
было
import sys
print "hello %s" % sys.argv[1]
Тогда, если мы должны были запустить python test.zip world
, мы бы get hello world
.
Таким образом, файл __main__.py
запускается, когда python вызывается в zip-файле.
Если ваш скрипт является каталогом или файлом ZIP, а не одним файлом python, __main__.py
будет выполняться, когда «скрипт» передается как аргумент интерпретатору python.