Super User SE может быть лучшим местом для этого.
Во всяком случае: они используют его для чего-нибудь конкретного окна? Мои родители раньше использовали мой компьютер на базе Linux для просмотра веб-страниц, теперь они используют планшет Android для того же. Запуск виртуализированной Windows поверх первой мог бы стать альтернативой. Кроме того, резервное копирование и откат проще, если вы используете виртуализацию, просто используйте что-то другое для постоянного хранения данных. Может быть, удаленное хранилище с резервным копированием и откатом (для вымогателей) либо вашей собственной инфраструктурой, либо в облаке. (как синхронизация, собственное облако и т.
Если Ваша программа применима как библиотека, но у Вас также есть основная программа (например, протестировать библиотеку), та конструкция позволяет другим импортировать файл как библиотеке и не запустить Вашу основную программу. Если Вашу программу называют foo.py, и Вы действительно "импортируете нечто" из другого файла Python, __name__
оценивает к 'foo'
, но если Вы запускаете "Python foo.py" из командной строки, __name__
оценивает к '__main__'
.
Примечание, что действительно необходимо вставить пробел между тем, если и _, и располагают основную программу с отступом:
if __name__ == '__main__':
main program here
Guido Van Rossum предлагает :
def main(argv=None):
if argv is None:
argv = sys.argv
...
if __name__ == "__main__":
sys.exit(main())
Этот способ, от которого можно работать main()
где-то в другом месте (предоставляющий аргументы), и если Вы хотите выйти с кодом ошибки всего return 1
от main()
, и он не заставит интерактивный интерпретатор выйти по ошибке.
Лучший шаблон - это:
def main():
...
if __name__ == '__main__':
main()
Это позволяет Вашему коду быть вызванным кем-то, кто импортировал его, также делая программы таким как pychecker и работа pylint.
Это - хорошая практика. Во-первых, это ясно отмечает Вашу точку входа модуля (предполагающий, что у Вас нет никакого другого исполняемого кода на верхнем уровне - фу). Во-вторых, это делает Ваш модуль разрешенным к ввозу другими модулями без выполнения, которое некоторые инструменты как средства проверки кода, и т.д. должны сделать поставщики программного блока.