⊗pyPmFnNl 21 of 129 menu

Дастури nonlocal дар Python

Ҳолатҳое пеш меоянд, ки дар функсияи берунӣ тағирёбандае вуҷуд дорад, ки ба он дастрасӣ дар функсияи дохилӣ лозим аст. Дар функсияи outer тағирёбандаи i-ро эълон мекунем. Нисбат ба функсияи дохилӣ ин тағирёбанда берунӣ (глобалӣ) хоҳад буд (глобалӣ тағирёбандаҳое ҳастанд, ки ТАНҲО дар рамзи берунӣ эълон шудаанд). Ва ба функсияи inner афзудани як воҳид ба i-ро таъин мекунем:

def outer(): i = 0 def inner(): i += 1 # хатои "local variable 'i' referenced before assignment" inner() return i

Аммо барои inner тағирёбандаи i маҳаллӣ аст, Python онро ноэълоншуда мешуморад ва хатои мувофиқро бармегардонад. Пештар ин гуна хато бо ёрии дастури global ислоҳ мешуд. Аммо дар ин ҷо i тағирёбандаи берунӣ аст, бояд дастури nonlocal истифода шавад. Ин номҳои тағирёбандаҳоро ба наздиктарин ҳудуди дида бароӣ мегирад, глобалиро истисно мекунад, яъне i дар дохили inner аз тағирёбандае гирифта мешавад, ки болотар аз ин функсия эълон шудааст:

def outer(): i = 0 def inner(): nonlocal i i += 1 inner() return i print(outer()) # 1-ро бармегардонад

Дар коди зерин баъзе барномасоз хато кардааст:

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

Ин код чист? Хаторо ёбед ва ислоҳ кунед.

Дар коди зерин баъзе барномасоз хато кардааст:

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

Ин код чист? Хаторо ёбед ва ислоҳ кунед.

Тоҷикӣ
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 истифода мебарем. Коркарди маълумот мувофиқи Сиёсати махфият сурат мегирад.
ҳамаро қабул кардан танзим кардан рад кардан