Питхон

Водич за затварање Питхона

Водич за затварање Питхона
Затварање је угнежђена унутрашња метода или функција која препознаје и има привилегију да користи променљиве чак и након завршетка извршавања спољне функције у локалном опсегу у којем је креирана. Променљива мора бити из спољне функције или опсега и није сигурно ограничена у локалном простору који ће се користити. Постоје три карактеристике затварања Питхона, а то су следеће:

Угњежђена функција

Прво морате схватити шта је угнежђена метода. Угнеждена функција може се дефинисати као метода наведена у другој методи. Рекурзивне функције могу доћи до променљивих спољног опсега. Да бисмо променили нелокалне променљиве, ми их посебно дефинишемо као нелокалне помоћу нелокалних кључних речи, јер су по природи само за читање. Дакле, прво погледајте угнежђену функцију изведену у Спидер Питхон 3.

Дефинисали смо две функције: спољну и унутрашњу. У спољној функцији прогласили смо променљиву у којој је нека текстуална вредност.

деф ектернал_фунц ()
мсг = 'Хи! Ја сам Акса Иасин '

Ова променљива је одштампана у унутрашњој функцији помоћу исказа за испис. Затим се враћа унутрашња функција, која је угнежђена функција, а након тога је позвана спољна функција.

деф иннер_фунц ()
испис (мсг)
ретурн иннер_фунц ()
иннер_фунц ()

Ако не користите кључну реч ретурн за враћање унутрашње функције, вратиће исти резултат.

Када покренете овај једноставни код, он ће вам вратити текст, дефинисан као вредност у променљивој 'мсг'.

Излаз: Хи! Ја сам Акса Иасин

Сада дефинишите исти тип угнежђене функције без повратне кључне речи и променљиве која прослеђује 'мсг' у параметру и добићете исти излаз.

Излаз: Здраво

Једноставна функција затварања

Користите исти код, са мало промене у последња два реда. Са жицом 'Здраво', тхе схов_мсг () позвана је метода, а враћена метода везана је за реч 'други'. Док зове други(), Текст 'Здраво' је још увек опозван, док је схов_мсг () метода је већ извршена у току. Обавезно додајте променљиву 'мсг' у оквиру спољне функције.

Када покренете овај код, показаће се да унутрашња функција, а Прикажи(), је додељена променљивој 'други'.

Излаз: .емисија на 0к0000020ЦЦЕД4Д820>

Можете једноставно одштампати име функције додељене променљивој 'други' као што:

штампати (друго.__наме__)

Исписат ће име функције.

Излаз: емисија

Ако желите да извршите ову променљиву као функцију, као и друге методе, то можете учинити додавањем заграде и позивањем овако:

други = схов_мсг ("Здраво")
други()
други()

Можете ово назвати колико год пута желите.

Када покренете овај код, приказаће се отприлике овако:

Излаз:

Здраво

Здраво

Здраво

Сада можете видети да чак и након завршетка извршавања спољне функције, унутрашња функција још увек памти променљиве и друге ствари које су креиране или дефинисане у локалном простору.

Функција затварања помоћу параметара

Сада смо додали параметре док смо преносили променљиву у спољну функцију као:

деф схов_мсг (мсг)

Вредност прослеђена у параметар спољне функције биће додељена променљивој која је дефинисана у оквиру ове спољне функције као:

Порука = порука

Проследите неке вредности низа у новостворене променљиве у последњем реду, као:

фунц1 = схов_мсг ('Здраво')
фунц2 = схов_мсг ('Здраво')

Сада ове функције морате позвати овако:

фунц1 ()
фунц2 ()

Добићете следећи излаз приказан на слици уређивача шпијуна:

Унутар Питхона, овај поступак, којим се сви подаци (Хи или Хелло за овај сценарио) прикачују у скрипту, назива се Затварање.

Једноставно множење помоћу Питхон Цлосиона

Дефинисали смо две функције. Један је спољни, који има дефинисан множилац, и унутрашњи у који ће се преносити вредност током позивања функције. У спољној функцији декларисали смо променљиву у којој је прослеђена дефинисана вредност множитеља. Ова вредност множитеља 'н' је помножен са неком вредношћу 'Икс' која се у изјави за штампу прослеђује унутрашњој функцији. Затим се враћа унутрашња функција, која је угнежђена функција, а након тога се променљиве позивају једна за другом у исписима исказа.

деф оут_мултипли (н):
деф ин_мултипли (к):
повратак к * н
ретурн ин_мултипли

Сада је нова променљива доделила неку вредност коју треба проследити у параметру спољне функције. Ова вредност ће бити сачувана у променљивој 'н', што је множитељ дефинисан у спољној функцији:

тимес3 = оут_мултипли (3)
тимес5 = оут_мултипли (5)

Овим променљивим биће додељено више вредности, које ће бити сачуване у 'Икс' променљива дефинисана у унутрашњој функцији коју треба помножити множитељем 'н'. Када исписујемо променљиву која се назива „пута“, функција са неком целобројном вредношћу 'Икс' додељено у загради учиниће да се помножи са спољном вредношћу функције 'н'.

Први ће излаз 27 док изводи исказ за испис јер променљива 'н' има 3 као мултипликатор, а ми смо дали 9 као још један цео број који се множи.

испис (тимес3 (9))

Други ће излаз 15 док извршава исказ за испис јер променљива 'н' има 3 као мултипликатор, а ми смо дали 5 као још један цео број који се множи.

испис (пута5 (3))

Последњи хоће излаз 30 док изводи исказ за испис јер је рекурзивно позивао пута да функционише променљиву. Први пут, времена јесу 'н' имајући 3 као множилац, који ће се помножити са целим бројем 2. При множењу ће се добити 6. Сада ће се овај 6 користити као вредност, а затим се прослеђује као аргумент функцији променљиве тимес, где је 'н' променљиви множилац је 5. Па кад 5 множи се са 6 избациће 30.

испис (пута5 (пута3 (2)))

Резултат можете видети у конзоли уређивача Спидер.

Закључак

Затварања могу забранити употребу глобалних вредности и имати облик сакривања података. Може такође пружити приступ оријентисаном на предмет или ентитет. Надамо се да ћете, након што следите овај водич, моћи да стекнете основе Питхон затварања.

ОпенТТД вс Симутранс
Стварање сопствене симулације превоза може бити забавно, опуштајуће и изузетно примамљиво. Због тога морате да испробате што више игара како бисте про...
Водич за ОпенТТД
ОпенТТД је једна од најпопуларнијих игара за пословну симулацију. У овој игри морате створити диван посао превоза. Међутим, почет ћете у почетку око 1...
СуперТукКарт за Линук
СуперТукКарт је сјајан наслов дизајниран да вам пружи Марио Карт искуство бесплатно на вашем Линук систему. Прилично је изазовно и забавно играти, диз...