Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗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 истифода мебарем. Коркарди маълумот мувофиқи Сиёсати махфият сурат мегирад.
ҳамаро қабул кардан танзим кардан рад кардан