Что такое __name__ == ‘__main__’ в python 🤯

if __name__ == '__main__':
    pass
Вход в полноэкранный режим Выйти из полноэкранного режима

Многие люди на YouTube, а также во встроенных модулях в python есть это утверждение, которое сбивает с толку большинство новичков, которые пытаются изучать python. В этом посте я постараюсь объяснить, что такое __name__ и почему оно используется в python?

Что такое __name__?

Перед запуском любого скрипта или файла python сам устанавливает некоторые специальные переменные, и __name__ — одна из них. Прелесть этой переменной в том, что она устанавливает значение переменной в зависимости от того, как мы запускаем файл. Например, если мы запускаем файл напрямую, то он получает значение __main__, но если мы запускаем этот файл, импортируя его в другой файл и запуская этот файл, то он получает имя файла в качестве значения, а этот другой файл получит значение __main__.

Рассмотрим подробнее:

Создадим два файла с именами first.py и second.py.
Добавьте следующий код в файл first.py 👇

def main():
    print('first.py file __name__ :', __name__)

if __name__ == '__main__':
    main()
Вход в полноэкранный режим Выйти из полноэкранного режима

Приведенный выше код очень прост: если __name__ равно __main__ только тогда мы запустим наш метод main(), что фактически означает, что при прямом запуске файла переменная __name__ будет равна __main__ только тогда будет выполнен наш метод main().

Если попытаться запустить файл first.py в одиночку, то мы получим следующий результат

first.py file __name__ : __main__
Вход в полноэкранный режим Выйти из полноэкранного режима

Теперь добавьте следующий код в файл second.py 👇

import first

print('second.py file __name__ :', __name__)
Войти в полноэкранный режим Выйти из полноэкранного режима

Если мы запустим файл second.py, то получим следующий результат

second.py file __name__ : __main__
Войти в полноэкранный режим Выход из полноэкранного режима

Если мы внимательно посмотрим, мы импортируем наш модуль first.py в second.py, но мы не получаем никакого вывода от первого метода main(). Это происходит потому, что первый файл не запускается напрямую, поэтому __name__ не будет равен __main__, он фактически равен first.

Тогда как мы можем получить переменную first.py __name__?

Для этого просто измените код second.py следующим образом…

import first

first.main()
print('second.py file __name__ :', __name__)
Войти в полноэкранный режим Выйти из полноэкранного режима

тогда мы получим следующий результат 👇

first python file __name__ : first
second.py file __name__ : __main__
Войти в полноэкранный режим Выйти из полноэкранного режима

Надеюсь, вы получили некоторое базовое представление о переменной __name__
Спасибо за прочтение 💗

Оцените статью
devanswers.ru
Добавить комментарий