У овом упутству научићемо како да користимо атрибут __наме__ програма Питхон за његово динамичко покретање у различитим контекстима.
Која је главна () функција у Питхону?
Неки програмски језици имају посебну функцију main()
која се назива тачка извршења програмске датотеке. Питхон интерпретер, међутим, покреће сваки ред серијски од врха датотеке и нема експлицитну main()
функцију.
Питхон нуди друге конвенције за дефинисање тачке извршења. Један од њих користи main()
функцију и својство __наме__ питхон датотеке.
Шта је __наме__ у Питхону?
Променљива __наме__ је посебна уграђена Питхон променљива која приказује име тренутног модула.
Има различите вредности у зависности од тога где извршавамо Питхон датотеку. Погледајмо пример.
Покретање датотеке Питхон као скрипте
Претпоставимо да имамо Питхон датотеку која се зове хелловорлд.пи са следећим садржајем:
print(__name__)
Ако покренемо хелловорлд.пи из командне линије, тада се извршава као Питхон скрипта. Програм Питхон можемо покренути помоћу следеће наредбе:
$ питхон хелловорлд.пи
Када покренемо програм као скрипту, вредност променљиве __наме__ је постављена на __маин__. Тако ће излаз следећег програма бити:
__главни__
Покретање датотеке Питхон као модула
Такође можемо покренути Питхон датотеку као модул. Да бисмо ово урадили, морамо да увеземо ову датотеку у други програм Питхон. Погледајмо пример.
Претпоставимо да имамо Питхон датотеку која се зове маин.пи у истом директоријуму као и датотека хеловорлд.пи. Садржи следећи садржај:
import helloworld
Када покренемо ову датотеку, имаћемо следећи излаз:
Здраво Свете
Овде видимо да увоз модула такође покреће сав код у датотеци модула.
Али, можемо видети да уместо да приказује __маин__, програм приказује име модула тј. Хелловорлд.
То је зато што је, у контексту покретања Питхон датотеке као модула, име самог модула додељено променљивој __наме__.
Коришћење иф условно са __наме__
Сада када смо схватили како се променљивој __наме__ додељују вредности, можемо користити if
условну клаузулу за различито покретање исте датотеке Питхон у различитим контекстима.
Погледајмо пример.
Претпоставимо да променимо садржај датотеке хелловорлд.пи у следеће:
def main(): print("Hello World") if __name__=="__main__": main()
Сада, када га покренемо као скрипту преко командне линије, излаз ће бити:
Здраво Свете
Међутим, када га покренемо као модул увозећи га у датотеку маин.пи , излаз се не приказује јер се main()
функција не позива.
Овде смо креирали прилагођену main()
функцију у датотеци хелловорлд.пи . Извршава се само када се програм покреће као самостална скрипта, а не као увезени модул.
Ово је стандардни начин да се експлицитно дефинише main()
функција у Питхону. То је један од најпопуларнијих случајева употребе променљиве __наме__ Питхон датотеке.