⊗pyPmFnCl 23 of 129 menu

Pythonda Ýapyk Funksiýalar

Ýapyk funksiýa (closure) diýmek, oňa elýeterli bolan ähli daşky üýtgeýjiler bilen birleşdirilen funksiýa düşünilýär.

Python-da, köplenç "funksiýanyň ýapyklygy" diýilende, öz funksiýanyň özü däl-de, onuň daşky üýtgeýjileri göz öňünde tutulýar.

Bizde outer atly funksiýa bolup, onda i üýtgeýjisi we inner atly içki funksiýa bardyr diýeliň. Onda i bir birlik artdyrylar. i üýtgeýjisiniň dogry işlemegi üçin, biz oňa nonlocal buýrugyny goşarys:

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

Indi daşky funksiýamyzy res üýtgeýjisine goýup, ony ýönekeý jaýlar bilen çagyrýarys:

res = outer() res() # 1 çap eder

Geliň res-i birnäçe gezek çagirayň. Kod ýerine ýetirilenden soň, her gezek sanawçy i bir birlik artar:

res() # 2 çap eder res() # 3 çap eder res() # 4 çap eder

Emma bu ýerde bir wajyp nuans bar - outer funksiýasynyň her çaýrylyşy öz sanawçysyny artyrar. Geliň outer funksiýasynyň birinji çaýrylyşyny res1 üýtgeýjisine, ikinji çaýrylyşyny bolsa res2 üýtgeýjisine ýazyň. Soňra olary yzly-ýyzdan konsola çap edeliň:

res1 = outer() res1() # 1 çap eder res1() # 2 çap eder res1() # 3 çap eder res2 = outer() res2() # 1 çap eder res2() # 2 çap eder res2() # 3 çap eder

Aşakdaky kod berlen:

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

Konsola näme çap ediler, aýdyň.

Her çaýrylyşy indiki Fibonacci sanyny çykarýan funksiýa ýasaň.

Mukdarda yzygiderlik iki gezek deň bolmazlyk üçin, aralykda tötänleýin bitin san çykarýan funksiýa ýasaň.

Türkmen
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkçeЎзбекOʻzbekTiếng Việt
Biz sahypanyň işlemegi, analitika we şahsyýetleşdirmek üçin cookie ulanýarys. Maglumatlaryň işlenişi Gizlinlik syýasaty boýunça amala aşyrylýar.
hemmesini kabul et sazlamak ret et