⊗pyPmFnNl 21 of 129 menu

Udhëzimi nonlocal në Python

Ka raste kur në një funksion të jashtëm ekziston një variabël, e cila duhet të jetë e aksesueshme në funksionin e brendshëm. Le të deklarojmë në funksionin outer variablin i. Në lidhje me funksionin e brendshëm, kjo variabël do të jetë e jashtme (variablat globale janë ato të deklaruara VETËM në kodin e jashtëm). Dhe funksionit inner do t'i caktojmë shtimin e një në i:

def outer(): i = 0 def inner(): i += 1 # do të shfaqë [4, 9, 25] inner() return i

Megjithatë, për inner variabla i është lokale, Python e konsideron atë të padeklaruar dhe shfaq gabimin përkatës. Më parë një gabim i tillë korrigjohej duke përdorur udhëzimin global. Megjithatë, këtu i është një variabël e jashtme, prandaj duhet të përdoret udhëzimi nonlocal. Ai merr emrat e listuar të variablave në sferën më të afërt të dukshmërisë, duke përjashtuar atë globale, d.m.th. i brenda inner do të merret nga variabla e deklaruar më lart se ky funksion:

def outer(): i = 0 def inner(): nonlocal i i += 1 inner() return i print(outer()) # do të shfaqë 1

Në kodin vijues një programist ka bërë një gabim:

num = 10 def outer(): num = 5 def inner(): num -= 2 inner() return num print(outer())

Çfarë nuk shkon me këtë kod? Gjeni dhe korrigjoni gabimin e autorit të kodit.

Në kodin vijues një programist ka bërë një gabim:

num = 3 def outer(): num += 1 tst = num def inner(): tst = tst ** 3 inner() return tst print(outer())

Çfarë nuk shkon me këtë kod? Gjeni dhe korrigjoni gabimin e autorit të kodit.

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