⊗pyPmFnCl 23 of 129 menu

Python-дағы жабықтаулар

Жабықтау (closure) деп функцияға қолжетімді барлық сыртқы айнымалылармен бірге функцияны айтады.

Python-да көбінесе "функцияның жабықтауы" деген сөзді айтқанда, дәл осы функцияның емес, дәл оның сыртқы айнымалыларын айтады.

Бізде outer деген функция бар делік, онда i айнымалысы жарияланған және ішкі inner функциясы бар. Онда i-ге бірлік қосылады. i айнымалысы дұрыс жұмыс істеуі үшін, оған nonlocal инструкциясын қосамыз:

def outer(): i = 0 def inner(): nonlocal i i += 1 print(i) return inner

Енді сыртқы функцияны res айнымалысына салайық және оны жақшамен шақырайық:

res = outer() res() # шығарады 1

res-ті бірнеше рет шақырайық. Код орындалғаннан кейін әр жолы i санағышы бірлікке өседі:

res() # шығарады 2 res() # шығарады 3 res() # шығарады 4

Бірақ мұнда маңызды нюанс бар - әрбір outer функциясын шақыру өз санағышын арттырады. Бірінші outer шақыруын res1 айнымалысына салайық, ал екінші шақыруды - res2 айнымалысына. Содан кейін оларды консольге ретімен шығарайық:

res1 = outer() res1() # шығарады 1 res1() # шығарады 2 res1() # шығарады 3 res2 = outer() res2() # шығарады 1 res2() # шығарады 2 res2() # шығарады 3

Мына код берілген:

def outer(): i = 10 def inner(): nonlocal i i -= 2 print(i) return inner res1 = outer() res1() res1() res2 = outer() res2() res2() res2()

Консольге не шығатынын айтыңыз.

Әр шақыру келесі Фибоначчи санын шығаратын функция жасаңыз.

Аралықта кездейсоқ бүтін сан шығаратын функция жасаңыз, бірақ сандар екі рет қатарынан бірдей болмауы керек.

Қазақ
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართული한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Біз сайттың жұмысы, аналитика және персонализация үшін cookie файлдарын қолданамыз. Деректерді өңдеу Құпиялылық саясаты бойынша жүреді.
барлығын қабылдау баптау қабылдамау