Что такое if __name__ == "__main__"
Эта загадочная строка встречается почти в каждом Python-файле. На деле она отвечает на простой вопрос: запустили файл напрямую или импортировали.
Переменная __name__
В каждом файле есть встроенная переменная __name__. Если файл запущен напрямую, в ней лежит '__main__'. Если же файл импортировали как модуль в другой программе, там будет его имя. По этому и отличают два случая.
Зачем это нужно
Часто в файле есть и функции (чтобы их импортировали другие), и код для запуска (чтобы проверить самому). Условие if __name__ == '__main__' выполняет «код запуска» только при прямом старте, но не при импорте — иначе он сработал бы некстати.
def greet():
print('привет')
if __name__ == '__main__':
greet() # только при прямом запуске файла
Хорошая привычка
Заворачивать запускающий код в это условие — стандартная практика. Она делает файл пригодным и для самостоятельного запуска, и для импорта без побочных эффектов. Новичку достаточно завести привычку так делать.
Частые вопросы
Что в __name__ при импорте? Имя модуля, а не '__main__'.
Обязательна ли эта строка? Нет, но она полезна, чтобы код не выполнялся при импорте.
Начать игру бесплатно