Страницы

Поиск по вопросам

четверг, 28 ноября 2019 г.

Объясните код if __name__ == “__main__” в терминах языка Java

#java #python


Я новичок в Python и стараюсь понять все через язык, который знаю, - через Java.
Наткнувшись на if __name__ == "__main__", впал в ступор. Читаю ответы по данной теме,
но все равно инфа сложно "ложится". Есть ли аналог этих __name__ да "__main__" на языке
Java? Заранее спасибо.

P.S. Не нужно писать про дубликат. В вопросах нет аналогов с Java. Не стоит рубить
с плеча. Прочтите мой вопрос внимательно, пожалуйста.
    


Ответы

Ответ 1



По отдельности эти конструкции на Java не перевести, но вместе - вполне возможно если понимать что они делают. Дело в том, что в Питоне любой модуль является исполнимым - и если его запустить, он всегда получает имя __main__. Ну а __name__ - это имя текущего модуля. Таким образом, проверка if __name__ == "__main__" проверяет что модуль был запущен из командной строки, а не был импортирован из другого модуля. Иными словами, проверка if __name__ == "__main__" - это дополнительная точка входа в программу. В языке Java точками входа в программу являются методы main: public static void main(String[] args)

Ответ 2



Подробный ответ на то, что делает эта констнукция в Python, есть по ссылке, приведённой пользователем Twiss в комментарии, перепечатывать я это не буду. В Java аналога такой конструкции нет и быть не может. В отличии от Python, импорт класса в Java не выполняет весь его код автоматически, поэтому подобные костыли не нужны. Кроме того, в Java программу нельзя начинать выполнять с произвольного класса. Точкой входа в программу может быть только класс, в котором есть метод с сигнатурой public static void main(String[] args) Если попытаться запустить класс, в котором такого метода нет, то вылетит ошибка "Main method not found".

Комментариев нет:

Отправить комментарий