Мора да сте наишли на иф __наме__ == "маин" конструкцију у Питхон-у. Али да ли знате његову тачну сврху?
У неким програмским језицима, главни метод служи као једина улазна тачка за извршавање програма. Приликом преласка са других језика на Питхон, идиом ако __наме__ == "__маин__" може изгледати да испуњава исти задатак. У Питхон-у то није случај.
Тхе ако __наме__ == "__маин__" идиом омогућава извршавање одређеног кода када се датотека покрене као скрипта. Такође осигурава да се исти код не извршава када увезете датотеку као модул.
Разумевање понашања променљиве __наме__
Тхе __име__ променљива је уграђена у Питхон. Представља име модула или скрипте у којој се користи. Када се скрипта извршава као главни програм, њена вредност се поставља на __главни__. Ако увезете скрипту као модул, вредност променљиве је постављена на стварно име модула.
Ово би могло бити збуњујуће у почетку, али погледајте следећи пример:
Направите скрипту и дајте јој име поздрави.пи. Ова скрипта ће садржати функцију која поздравља корисника и исписује вредност
__име__ променљива. Такође ће од корисника тражити да унесе своје име.дефпоздравити(име):
штампа (ф"Здраво, {наме}!")штампа („Вредност __наме__:“, __име__)
ако __наме__ == "__главни__":
корисничко_име = унос("Молимо Вас да унесете своје име: ")
поздрави (корисничко_име)
друго:
штампа („Увезен је модул 'поздрав'.)
Руннинг тхе поздрави.пи скрипта ће приказати следећи излаз:
Вредност тхе __име__ променљива враћа као __главни__ јер се скрипта извршава директно.
Сада креирајте другу скрипту и дајте јој назив сцрипт2.пи. Затим увезите велики поздрав скрипта као модул.
увоз велики поздравштампа („Извршавање скрипте поздрава...“)
греетингс.греет("Алице")
Позивање поздравити функција из Поздрав модул даје следећи излаз.
Вредност тхе __име__ променљива мења стварни назив увезеног модула. У овом случају, велики поздрав.
Ова вредност је оно што је идиом ако __наме__ == "__маин__" тражи да утврди да ли се датотека покреће као скрипта или је увезена као модул.
Када користити иф __наме__ == "__маин__" конструкцију?
Можете додати ако __наме__ == "__маин__" конструисати у било ком писму. Али постоје неки сценарији у којима његова употреба може бити најкориснија. Научићете о овим сценаријима користећи једноставан програм за калкулатор у наставку.
# цалцулатор.пи
дефдодати(а, б):
повратак а + бдефодузимати(а, б):
повратак а - бдефумножити(а, б):
повратак а * бдефподела(а, б):
ако б != 0:
повратак а / б
друго:
повратак„Грешка: Дељење са нулом!“ако __наме__ == "__главни__":
штампа („Добро дошли у Калкулатор!“)
штампа („Изаберите операцију:“)
штампа ("1. Додати")
штампа ("2. одузми")
штампа ("3. множи")
штампа ("4. Подела")избор = инт (улаз("Унесите свој избор (1-4): "))
нум1 = флоат (улаз ("Унесите први број: "))
нум2 = флоат (улаз ("Унесите други број: "))
ако избор == 1:
резултат = додај (број1, број2)
штампа (ф"Збир {нум1} и {нум2} је: {резултат}")
елиф избор == 2:
резултат = одузимање (број1, број2)
штампа (ф"Разлика између {нум1} и {нум2} је: {резултат}")
елиф избор == 3:
резултат = множење (број1, број2)
штампа (ф"Производ од {нум1} и {нум2} је: {резултат}")
елиф избор == 4:
резултат = дељење (број1, број2)
штампа (ф"Подела на {нум1} од стране {нум2} је: {резултат}")
друго:
штампа („Неисправан избор!“)
Први сценарио је када желите да покренете скрипту независно и извршите одређене радње. Ово омогућава скрипти да функционише као самосталан програм. Тхе ако __наме__ == "__маин__" конструкција омогућава корисницима да комуницирају са калкулатором користећи интерфејс командне линије. Ово корисницима даје могућност да користе функционалност програма без потребе да разумеју или мењају основни код.
Још увек је могуће покренути програм без ако __наме__ == "__маин__" конструисати и постићи исти резултат, али би ваш код изгубио модуларну организацију кода.
Други сценарио је када желите своје код да има модуларни дизајн. Ово омогућава другим програмима да увезу вашу скрипту као модул и користе њене функције без покретања непотребних функционалности.
У случају програма калкулатора, други програми могу да увезу калкулатор модул без покретања ЦЛИ интерфејса и упитника за унос корисника. Ово осигурава поновну употребу кода и модуларни дизајн. Дакле, омогућавајући да се калкулатор неприметно интегрише у веће апликације.
увоз калкулатор
# Коришћење функција из модула калкулатора
ресулт_адд = цалцулатор.адд(5, 3)
штампа („Резултат сабирања:“, ресулт_адд)
резултат_субтрацт = цалцулатор.субтрацт(10, 4)
штампа („Резултат одузимања:“, ресулт_субтрацт)
Трећи сценарио је када желите тестирајте и отклоните грешке у вашој Питхон скрипти независно од других модула или скрипти које би га могле увести. У примеру калкулатора, олакшава фокусирање на тестирање функционалности калкулатора без ометања спољашњег кода.
увоз калкулатор
# Тестирање функција калкулатора
ако __наме__ == "__главни__":
# Тест додавање
резултат = цалцулатор.адд(5, 3)
штампа („Резултат додавања:“, резултат)# Тест одузимање
резултат = цалцулатор.субтрацт(8, 4)
штампа („Резултат одузимања:“, резултат)
# Тест множења
резултат = калкулатор.множи(2, 6)
штампа („Резултат множења:“, резултат)
Горњи код показује како самостално отклонити грешке у скрипти калкулатора.
Када је непотребно користити иф __наме__ == "__маин__" конструкцију?
Као што сте видели у горњим сценаријима, употреба ако __наме__ == "__маин__" конструкција је да разликује скрипту коју покрећете као главни програм и ону коју увозите као модул. Међутим, постоје случајеви када је употреба непотребна.
Први случај је када је ваша скрипта једноставна и нема функције или модуле за вишекратну употребу и не намеравате да је увезете. У овом случају, требало би да изоставите ову конструкцију пошто се цела скрипта извршава када се покрене. Ово је уобичајено за једнократне скрипте које имају одређену сврху и нису намењене за поновну употребу или увоз.
Други случај је када радите у интерактивној Питхон сесији, нпр. када користите Јупитер нотебоок. У интерактивној сесији, куцате и извршавате код директно у командној линији или у интерактивној Питхон љусци. Као што је Питхон РЕПЛ (Петља за читање-Евал-Принт). Ово вам омогућава да експериментишете са кодом и тестирате мале исечке, дајући вам тренутне резултате.
У овим интерактивним окружењима, концепт скрипте која се покреће као главни програм или је увезена као модул се не примењује. Директно извршавате исечке кода без потребе за традиционалном улазном тачком скрипте.
Како се постаје мајстор у Питхон-у?
Да бисте постали мајстор било ког програмског језика, морате разумети како функционишу основни концепти функција или алата. Баш као што сте научили о конструкцији иф __наме__ == "__маин__" у овом чланку.
Разумевање основних концепата ће вам помоћи да тачно знате како ће се ваш програм понашати када их користите. Нема журбе, учење концепата једног по једног помоћи ће вам да дубље зароните у сваки од њих.