Поиск по сайту:
503 Sеrviсе Unаvаilаblе - извини, что-то у меня голова раскалывается.

Python: __name__ == «__main__»

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
06.12.2019
Как установить Python 3 на Ubuntu 16.04 LTS

Вы видите это везде.

Если вы некоторое время программировали на Python или просто просматривали репозитории Python Github, вы, вероятно, натолкнулись на этот фрагмент кода.

if __name__ == '__main__':
  # do something

 

Он вездесущий.

Фактически, именно столько раз этот фрагмент кода появляется в Github!

Python: __name__ == «__main__»

18 миллионов + раз!

Итак, без дальнейших церемоний, давайте изучим, что именно делает этот фрагмент кода.

 

Что такое __name__?

__name__ — это просто встроенная переменная в Python, которая оценивает имя текущего модуля.

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

 

Пример 1

Давайте создадим простой скрипт Python в файле с именем test.py

# test.py
print("__name__ в test.py имеет значение " + __name__)

 

Эта строка будет выводить переменную __name__ на экране, чтобы мы могли ее изучить.

Давайте запустим этот скрипт из терминала и посмотрим, что мы получим.

$ python test.py

 

Вот вывод, который вы увидите на экране.

$ python3 test.py
__name__ в test.py имеет значение __main__

 

Из этого можно сделать вывод, что в этом примере переменной __name__ было присвоено строковое значение __main__

Теперь давайте посмотрим на немного другой пример.

 

Пример 2

Давайте создадим новый файл test2.py  в том же каталоге, что и test.py

В этом новом файле давайте импортируем test, чтобы мы могли проверить переменную __name__ в test.py, а также напечатаем переменную __name__ в test2.py

# test2.py
import test

print("__name__ in test2.py имеет значение " + __name__)

 

Если вы запустите скрипт test2.py из терминала, это то, что вы увидите на своем экране.

$ python3 test2.py
__name__ in test.py имеет значение test
__name__ in test2.py имеет значение __main__

 

Читать  Обратный список в Python

Хм, интересно, так что же происходит?

По сути, происходит то, что  __name__   устанавливается на уровне модуля.

Устанавливается на  имя  модуля. Другими словами, для каждого модуля в вашем коде, __name__ будет установлен на это имя модуля.

А для точки входа выполнения, основного сценария Python, переменная __name__будет установлена ​​в __main__

Это круто и все, но как эта специальная переменная используется на практике?

 

Как __name__ используется в реальных приложениях?

Одна из причин этого заключается в том, что если вы хотите написать модуль, который может быть выполнен напрямую или альтернативно, импортируйте его и используйте в другом модуле.

Например, давайте создадим фиктивный модуль hello.py, который другие смогут импортировать в свои собственные сценарии или могут напрямую выполнить его, если захотят.

Вот что должен делать этот модуль.

Если вы выполняете модуль напрямую, он должен напечатать Привет, AndreyEx на экране.

Но если вы вместо этого импортируете его, он может предоставить вам функцию hello(), где вы можете контролировать, кого приветствовать.

# hello.py
def hello(name):
  print(f"Привет, {name}!")

if __name__ == '__main__':
  hello('AndreyEx')

 

Теперь давайте создадим основной скрипт main.py, который будет импортировать модуль hello.

# main.py
from hello import hello

hello('Destroyer')

 

Как вы думаете, что произойдет, если мы напрямую запустим hello.py ?

Мы просто получаем Привет, AndreyEx! на экране, так как условие if внутри модуля hello будет выполнено!

$ python3 hello.py
Привет, AndreyEx!

 

Как насчет того, чтобы вместо этого мы выполним main.py?

Теперь мы получим только Привет, AndreyEx! напечатано на экране.

$ python3 main.py
Привет, Destroyer!

 

Читать  Как использовать флажок PyQt в Python?

Но что, если мы не включили условие if __name__ == ‘main’ в модуль hello ?

Если вы не включили условие if в свой модуль, вы получите этот нежелательный результат при запуске основного скрипта.

$ python3 main.py
Привет, AndreyEx!
Привет, Destroyer!

 

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Если статья понравилась, то поделитесь ей в социальных сетях:

Читайте также


Deprecated: Функция WP_Query вызвана с аргументом, который считается устаревшим с версии 3.1.0! Параметр caller_get_posts считается устаревшим. Используйте ignore_sticky_posts. in /var/www/andreyex/data/www/andreyex.ru/wp-includes/functions.php on line 6085

8 комментариев к Python. Давайте создадим простой HTTP-сервер

  1. Имя:

    Спасибо за интересную статью. Но мне хотелось бы узнать больше. Например, как выключить сервер и как поменять файл(не index.html), который будет отсылать сервер.

  2. Матвей:

    как запустить web-сервер в этом каталоге? Куда это вставить $ python server.py
    serving at port 8080

    • Che1989:

      Судя по синтаксису это интерфейс командной строки windows. При правильной установке питона команда будет звучать вот так: python server.py

  3. Инкогнито:

    🙂 🙂

  4. Вопрос:

    как воспользоваться сервером с другого пк

    • Che1989:

      Самый простой вариант — набрать в адресной строке другого ПК ip-адрес нашего ПК. Однако это не сработает если: другой ПК — это любой ПК из интернета, а на вашем ПК «черный» (установленный за сетевым экраном провайдера интернета) адрес. У вас должен быть либо «белый» адрес, либо другой ПК должен находиться в одной локальной сети с сервером.

  5. Сергей:

    как добавить данные в файл на сервере?

    • Che1989:
      Создайте страницу index.html в том же каталоге, откуда запускается python -m http.server 8080
      

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

**ссылки nofollow

Рекомендуемое
Предыдущая статья: 10 лучших камер для ведения блогов и влогов…

Спасибо!

Теперь редакторы в курсе.