Уведомления

Группа в Telegram: @pythonsu

#1 Май 29, 2012 22:54:03

johniek_comp
Зарегистрирован: 2012-05-28
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Функция __main__

Что это значит, в гугле внятного ответа не получил, в книге тоже…

if __name__ == '__main__':

Офлайн

#2 Май 29, 2012 23:35:33

fata1ex
От:
Зарегистрирован: 2009-07-11
Сообщения: 732
Репутация: +  52  -
Профиль   Отправить e-mail  

Функция __main__

Расскажите, как вы искали?

Запрос ‘python __name__ __main__’ даёт ответ в первых же ссылках.



Офлайн

#3 Май 29, 2012 23:40:35

buddha
От:
Зарегистрирован: 2012-03-02
Сообщения: 422
Репутация: +  15  -
Профиль   Отправить e-mail  

Функция __main__

Марк Лутц “Изучаем питон 4е изд.” 666 стр.

Ниже демонстрируется специальный прием, позволяющий импортировать
файлы как модули и запускать их как самостоятельные программы. Каждый
модуль обладает встроенным атрибутом name , который устанавливается
интерпретатором следующим образом:
• Если файл запускается как главный файл программы, атрибуту name на
запуске присваивается значение “ main ”.
• Если файл импортируется, атрибуту name присваивается имя модуля,
под которым он будет известен клиенту.
Благодаря этому модуль может проверить собственный атрибут name
и определить, был ли он запущен как самостоятельная программа или
импортирован другим модулем. Например, предположим, что мы создаем файл
модуля с именем гиппге.ру, который экспортирует единственную функцию с именем
tester:

def tester(): 
    print("It's Christmas in Heaven...") 
if __name__ == ' main__' : # Только когда запускается, 
    tester()                          # а не импортируется 

Этот модуль определяет функцию для клиентов и может импортироваться как
обычный модуль:
% python 
>» import runme 
>» runme.tester() 
It's Christmas in Heaven... 

Но в самом конце модуля имеется программный код, который вызывает
функцию, когда этот файл запускается как самостоятельная программа:
% python runme.py 
It's Christmas in Heaven...

Таким образом, переменная name может играть роль флага, определяющего
режим использования, позволяя программному коду выполнять разные
действия, когда он используется как импортируемая библиотека или как
самостоятельный сценарий. Вы будете встречать этот прием практически во всех
действующих программах на языке Python, с которыми вам предстоит
столкнуться.
Пожалуй, чаще всего проверка атрибута name выполняется в программном
коде для самопроверки модуля. Проще говоря, вы можете добавить в конец
модуля программный код, который будет выполнять проверку экспортируемых
элементов внутри самого модуля, заключив этот код в условную инструкцию,
проверяющую атрибут name . При таком подходе вы можете использовать
файл в других модулях, импортируя его, и тестировать логику работы,
запуская его из командной строки или каким-либо другим способом. На практике
программный код самопроверки в конце файла, заключенный в условную
инструкцию, проверяющую атрибут name , является, пожалуй, самым
распространенным и удобным способом модульного тестирования в языке Python. (В
главе 35 обсуждаются другие часто используемые способы тестирования
программного кода на языке Python - как будет показано, в стандартной
библиотеке существуют модули unittest и doctest, которые реализуют более
совершенные средства тестирования.)
Прием, основанный на проверке атрибута name , также часто используется
при создании файлов, которые могут использоваться и как утилиты
командной строки, и как библиотеки инструментов. Например, предположим, что
вы пишете на языке Python сценарий поиска файлов. Код принесет больше
пользы, если реализовать его в виде функций и добавить проверку атрибута
name для организации вызова этих функций, когда файл запускается как
самостоятельная программа. При таком подходе сценарий может повторно
использоваться в составе других программ.

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

Отредактировано buddha (Май 29, 2012 23:42:02)

Офлайн

#4 Июнь 8, 2012 00:59:21

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

Функция __main__

“666 стр.”
Символично

Офлайн

#5 Июнь 9, 2012 00:53:40

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Функция __main__

Я думаю что человек и не искал вовсе, потому как не найти ответ на такой вопрос можно было разве что спрашивая бабушек у подъезда



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version