⊗pyPmFnCl 23 of 129 menu

Mbylljet në Python

Nën mbyllje (closure) kuptohet një funksion së bashku me të gjitha ndryshoret e jashtme që janë të disponueshme për të.

Në Python më shpesh, kur thuhet "mbyllja e një funksioni", nënkuptohen jo vetë funksioni, por pikërisht ndryshoret e tij të jashtme.

Le të themi se kemi funksionin e mëposhtëm outer, brenda të cilit është deklaruar ndryshorja i dhe funksioni i brendshëm inner. Në të, i do të rritet me një. Që ndryshorja i të funksionojë si duhet, i shtojmë asaj udhëzimin nonlocal:

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

Tani le të vendosim funksionin e jashtëm në ndryshoren res dhe ta thirrim atë me kllapa të rrumbullakëta:

res = outer() res() # do të shfaqë 1

Le ta thërrasim res disa herë. Pas ekzekutimit të kodit, numëruesi i do të rritet me një çdo herë:

res() # do të shfaqë 2 res() # do të shfaqë 3 res() # do të shfaqë 4

Sidoqoftë, këtu ka një nuancë të rëndësishme - çdo thirrje i funksionit outer do të rrisë numëruesin e vet. Le të vendosim thirrjen e parë të outer në ndryshoren res1, dhe thirrjen e dytë - në ndryshoren res2. Pastaj le t'i shfaqim ato në konsoll në mënyrë sekuenciale:

res1 = outer() res1() # do të shfaqë 1 res1() # do të shfaqë 2 res1() # do të shfaqë 3 res2 = outer() res2() # do të shfaqë 1 res2() # do të shfaqë 2 res2() # do të shfaqë 3

Jepet kodi i mëposhtëm:

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

Thuani, çfarë do të shfaqet në konsoll.

Krijoni një funksion, ku çdo thirrje e tij do të kthejë numrin e ardhshëm të Fibonaçit.

Krijoni një funksion, i cili do të japë një numër të rastësishëm të plotë në një interval, por në mënyrë që dy herë radhazi të mos ketë numra të njëjtë.

Shqip
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ne përdorim cookie për funksionimin e sajtit, analizën dhe personalizimin. Përpunimi i të dhënave bëhet në përputhje me Politikën e Privatësisë.
prano të gjitha konfiguro refuzo