⊗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 файлдарын колдонобуз. Маалыматтарды иштетүү Маалыматты коргоо саясаты боюнча жүргүзүлөт.
баарын кабыл алуу ыңгайлаштыруу четке кагуу