python if name main что значит

№37 Функция __main__ / для начинающих

Лаконичность — важный элемент программирования. И вполне логично задавать вопрос о том, зачем разработчику добавлять лишние строки в программу. Функция main() требует дополнительных строк, но она служит определенной цели.

Что такое функция main()?

Main — это специальная функция, которая позволяет добавить больше логики в структуру программ. В Python можно вызвать функцию в нижней части программы, которая и будет запущена. Рассмотрим такой пример:

Можно увидеть, что выражение «Дайте печенье.» выводится до «Печенье вкусное!», потому что метод cookies() не вызывается вплоть до последней строки, а именно в этой функции хранится предложение «Печенье вкусное!».

Как создать функцию main

Теперь вызовем функцию в конце программы:

Можно запустить код:

Результат не поменялся. Но теперь сам код читать легче. Пусть в нем и больше строк (и одна дополнительная строка), вполне очевидно, что именно происходит:

Код не только чище, но и логичнее. Если вы пришли из другого языка, например, Java, но знаете, насколько это удобно.

Значение __name__

Этот код можно запустить следующим образом:

Предположим, что этот код был импортирован в качестве модуля в файл main.py :

if __name__ == __main__ в Python

Вы наверняка встречали следующую конструкцию в программах на Python в функции main :

Что она значит? В Python любая переменная, начинающаяся с двух символов нижнего подчеркивания ( __ ), является специальной. Это зарезервированные значения, которые выполняют определенную роль в программе.

Это значит, что строка выше вернет True только в том случае, если программа будет запущена прямо.

Если же ссылаться на файл как на модуль, то содержимое конструкции if не будет выполнено. Рассмотрим на примере.

Как использовать __name__ и __main__

Создадим новый скрипт на Python под названием username.py. В коде будем просить пользователя ввести его имя и проверять, не является ли его длина больше 5. Если символов не больше 5, то попросим ввести имя снова.

Начнем с определения глобальной переменной для хранения имени пользователя:

Источник

Что такое if __name__ == ‘__main__’ (if name main в языке Python)

Конструкци if __name__ == ‘__main__’: main() в Python определяет какая функция будет исполняться в качестве основной. Обычно это main().

В Python есть понятие namespace. main — основной namespace, с ним происходит работа из оболочки, каждый импортируемый модуль относится к другому namespace, имя которого совпадает с именем модуля.

Читайте также:  к чему снится лысеющий муж

Если пишется простой CGI скрипт на питоне можно не указывать «if name main». Скрипт при этом будет успешно отрабатывать если выполнять его из консоли или, например, поместить в CRON.

Значение у «if name main» появляется тогда когда написанный скрипт/модуль импортируется для того, чтобы использоваться в других программах.

Напишет простой скрипт test.py

if __name__ == ‘__main__’:
print (‘No module’)
else:
print (‘Running where imported a module’)

Теперь проведем два эксперимента. Сначала обратимся к скрипту из консоли:

No module

Теперь авторизуемся в оболочке Python

Python 3.5.2 (default, Nov 23 2017, 16:37:01)
[GCC 5.4.0 20160609] on linux
Type «help», «copyright», «credits» or «license» for more information.

И импортируем модуль

Running where imported a module

Конструкция определяющая какой фрагмент кода исполнять фактически всегда указывается последней строкой в скрипте, ниже еще один пример

def main():
print («It’s from main function»)

if __name__ == ‘__main__’: main()

Выполняем скрипт из консоли

It’s from main function

Строка выводится, если модуль импортировать действия указанного для функции не произойдет. Оно выполнится только если фактически будет обращение

Python 3.5.2 (default, Nov 23 2017, 16:37:01)
[GCC 5.4.0 20160609] on linux
Type «help», «copyright», «credits» or «license» for more information.

На этом этапе строки не выводится. Также не будут выполнены никакие участки настоящей программы.

Чтобы выполнение произошло нужно обратиться к функции.

It’s from main function

Таким образом, if __name__ == ‘__main__’ в питоне используется для того чтобы предотвратить мгновенное выполнение участков программного кода сразу при импортировании модулей что происходило бы без этой конструкции.

Источник

Что делает if __name__ == «__main__»: в Python?

Вы наверняка не раз видели и даже использовали эту строку кода:

Знаете ли вы, что она делает и зачем она нужна? Давайте разберемся.

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

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

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

Читайте также:  Липома почки что это

Эта переменная обычно содержит следующие значения:

Давайте рассмотрим пример.

Example.py

В качестве примера рассмотрим следующий код.

Специальные параметры

Посмотрим на содержимое __name__ в зависимости от способа выполнения модуля example.py.

Когда ваш модуль является основной программой

Если вы запустите свой модуль в качестве основной программы:

Интерпретатор присвоит значение __main__ переменной __name__. Точно так же, как если бы первая строка кода в вашем файле была:

Что произойдет, если вы запустите файл? Вы получите следующие сообщения:

Когда ваш модуль импортируется другим

Предположим, что example.py не является основным модулем, а импортирован из другого. Например, если мы импортируем его из консоли Python:

Интерпретатор будет искать ваш файл example.py и перед выполнением вашего модуля присвоит переменной name значение example, как если бы следующая строка была выполнена в начале вашего файла:

В качестве итога.

Вы можете использовать if name == ‘main‘: для защиты части кода. Таким образом, вы можете быть уверены, что блок будет выполнен только в том случае, если ваш модуль является основной программой.

Зачем это нужно?

Бывают случаи, когда вы хотите написать модуль Python, который может быть импортирован другими программами и может быть использован в качестве основной программы. Например:

Источник

Использование if __name__ == «__main__» в Python

В данном руководстве мы рассмотрим для чего используется условие if name == «__main__» в Python, и в каких случаях оно нам может пригодиться.

Введение

Это стандартный код, который защищает пользователей от случайного вызова сценария, когда они не собирались этого делать, и его применение является хорошей практикой.

Это имеет значение для этих двух случаев использования:

В последнем случае обычно мы хотим только импортировать модуль, а затем позже в коде выполнить некоторые функции или использовать класс из этого файла. Именно здесь вступает в игру оператор if __name__ == «main», который работает как защитник.

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

Специальная переменная

Когда интерпретатор Python читает исходный файл, он делает две вещи:

Давайте посмотрим на следующий пример, где мы правильно используем оператор if __name__ == «main»:

Первый случай использования

Запустите его как основную программу с помощью python testa.py.

Читайте также:  ortholite кроссовки что значит

Интерпретатор Python присвоит переменной __name__ жестко закодированную строку «main», и таким образом код в операторе if будет выполнен:

Второй случай использования

Импортируйте testa в качестве модуля.

Интерпретатор присвоит «testa» переменной __name__ в модуле testa. Таким образом, код в операторе if не будет выполнен, и func_one не запустится.

Без if __name__ == «main» в testa.py вывод был бы следующим:

Обычно это не то, что нам нужно. Поэтому, если вы хотите запустить код в файле, хорошей практикой будет обернуть весь этот код в оператор if __name__ == «main».

Заключение

В этой статье мы рассмотрели различные способы использования инструкции if __name__ == «main». Научились применять их на практики и теперь знаем как использовать их у себя в проекте.

Источник

Основная функция в Python

Основная функция Python выполняется только тогда, когда она используется, как программа на Python. Как вы знаете, мы также можем импортировать программу на Python, как модуль, в этом случае основной метод не должен выполняться.

Что такое основная функция в Python?

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

Вот почему существует специальный метод определения основного метода в программе Python, чтобы он выполнялся только тогда, когда программа запускается напрямую, а не выполняется при импорте, как модуль. Давайте посмотрим, как определить основную функцию в простой программе.

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

Основная функция, как модуль

Теперь давайте используем указанный выше исходный файл Python в качестве модуля и импортируем его в другую программу python_import.py.

Теперь, когда выполняется вышеуказанная программа, производится вывод ниже.

Обратите внимание, что первые две строки печатаются из исходного файла python_main_function.py. Обратите внимание, что значение __name__ отличается, и, следовательно, основной метод не выполняется.

Операторы программы python выполняются построчно, поэтому важно определить метод main() сначала перед условием if для выполнения основного метода. В противном случае вы получите ошибку, так как NameError: имя ‘main’ не определено.

Источник

Обзорно-познавательный сайт