January 22, 2020

Еще раз о __name__ и __main__

Хотелось бы еще раз обратить внимание на использование специальных символов с двумя подчеркиваниями __name__ и __main__.

Давайте напишем два простых скрипта.

Что вообще с этим скриптом? Если этот скрипт будет выполнен через сам Python, то есть через CMD, то интерпритатор посмотрит на __name__ и он будет равен __main__. И вывод будет 'call a converting func that you want' вот такой. else ветка будет работать тогда, когда наш скрипт был не выполнен через Python напрямую, а был заимпортирован через ключевое слово import.

Создадим еще один файлик, он будет вызывать наш конвертер:

import converter

print(converter.to_miles(10))

Теперь находясь в Anaconda Prompt мы можем проверить, что будет, если мы напрямую запустим наш конвертер и через скрипт выше:

Короче говоря if __name__ == '__main__' обрабатывает два случая, когда скрипт был запущен напрямую и когда скрипт был импортирован. В обоих случаях мы можем хотеть делать что-то разное и как раз это те блоки кода, которые потребуются нам, чтобы предпринять что-то в том или ином случае.