Выражение if __name__ == "__main__" в Python встречается довольно часто, и вы задаёте вопрос: "Зачем оно?". Давайте разберём на практике, как оно работает и зачем вообще нужно. Приступим!
# foo.py
import bar
print("foo.__name__ set to ", __name__)
# bar.py
print("bar.__name__ set to ", __name__)
python bar.py
bar.__name__ set to __main__
python foo.py
bar.__name__ set to bar
foo.__name__ set to __main__
if __name__ == "__main__":
...
# Модуль person.py
def creds():
name = "Oleg"
age = 100
print(f"Инфа о человеке: {name}, {age}")
print("Какая-то строка с вызовом в глобальном контексте")
if __name__ == "__main__":
print("Модуль person исполняется напрямую")
else:
print("Модуль person был импортирован в другой модуль")
# Модуль utility.py
import person
person.creds()
if __name__ == "__main__":
print("Модуль utility исполняется напрямую")
else:
print("Модуль utility был импортирован в другой модуль")
python person.py
Какая-то строка с вызовом в глобальном контексте
Модуль person исполняется напрямую
python utility.py
Какая-то строка с вызовом в глобальном контексте
Модуль person был импортирован в другой модуль
Инфа о человеке: Олег, 100
Модуль utility исполняется напрямую
Источник: Medium