Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
if __name__ == '__main__': main()
Если вы задались этим вопросом, то вы попали в нужную статью.
Открыть Github GistИтак, давайте сначала разберемся с основами: перед запуском любой программы Python присваивает некоторые значения определенным переменным. Переменная '__name__' определяет имя скрипта, который выполняется в данный момент.
Если выполняемый скрипт/модуль является текущим, то переменной будет присвоено значение '__main__'.
Итак, нижеприведенный фрагмент кода при выполнении скрипта (basics.py) будет выполнять все, что написано в функции main.
#basics.py def main(): pass if __name__ == '__main__': main()
Переменная '__name__' позволяет нам моделировать выполнение программы в зависимости от того, откуда она вызывается. Чтобы донести мою мысль до читателя, рассмотрим два приведенных ниже сценария, наш оригинальный basics.py и second.py
#basics.py def main(): print('Script basics.py is calling me') if __name__ == '__main__': main() else: print('Script second.py is calling me')
#second.py import basics
Обратите внимание, что в файле second.py мы написали только одно утверждение import basics, что эквивалентно тому, что мы хотим запустить код, присутствующий в basics.py, через second.py.
Теперь давайте посмотрим, что получится, когда мы запустим basics.py
И мы получим следующий результат, когда запустим second.py
В заключение, '__name__' - это переменная, которой Python присваивает значение '__main__' во время выполнения текущего сценария.
Приведенный ниже код должен развеять все ваши сомнения относительно этой переменной.
#second.py import basics print(__name__) print(basics.__name__)
Вывод:
Надеюсь, статья была полезной для вас, удачного дня.
20.08.2023 18:21
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в 2023-2024 годах? Или это полная лажа?".
20.08.2023 17:46
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
19.08.2023 18:39
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в частности, магию поплавков и гибкость flexbox.
19.08.2023 17:22
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для чтения благодаря своей простоте. Кроме того, мы всегда хотим проверить самые последние возможности в наших проектах!
18.08.2023 20:33
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий их языку и культуре.
14.08.2023 14:49
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип предназначен для представления неделимого значения.