⊗pyPmFnCl 23 of 129 menu

Kufunga kwa Python

Kufunga (closure) hurejelea kazi pamoja na vigezo vyote vya nje vinavyopatikana kwake.

Katika Python mara nyingi, wakati wakisema "kufunga kwa kazi", hamaanishi kazi yenyewe, bali hasa vigezo vyake vya nje.

Tuchukulie tuna kazi ifuatayo outer, ambayo imetangazwa kigezo i na kazi ya ndani inner. Ndani yake i itaongezewa moja. Ili kigezo i kifanye kazi vizuri, tunaongeza agizo nonlocal:

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

Sasa tuweke kazi ya nje kwenye kigezo res na tuiite kwa mabano ya duara:

res = outer() res() # itatoa 1

Wacha tuite res mara kadhaa. Baada ya kutekeleza msimbo kila wakati kihesabu i kitaongezeka kwa moja:

res() # itatoa 2 res() # itatoa 3 res() # itatoa 4

Hata hivyo kuna undani muhimu hapa - kila utendaji wa kazi outer utaongeza kihesabu chake. Wacha utendaji wa kwanza wa outer uuandikwe kwenye kigezo res1, na utendaji wa pili - kwenye kigezo res2. Kisha tuyaonyeshe mfululizo kwenye konsoli:

res1 = outer() res1() # itatoa 1 res1() # itatoa 2 res1() # itatoa 3 res2 = outer() res2() # itatoa 1 res2() # itatoa 2 res2() # itatoa 3

Kuna msimbo ufuatao:

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

Waambie, nini kitaonyeshwa kwenye konsoli.

Tengeneza kazi, ambayo kila utendaji wake utatoa nambari inayofuata ya Fibonacci.

Tengeneza kazi, ambayo itatoa nambari kamili ya nasibu katika kipindi, lakini ili isiwe na nambari sawa mara mbili mfululizo.

Kiswahili
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Tunatumia kuki kwa ajili ya uendeshaji wa tovuti, uchambuzi na ubinafsishaji. Usindikaji wa data unafanyika kulingana na Sera ya Faragha.
kubali yote sanidi kataa