⊗pyPmFnNl 21 of 129 menu

Python'дагы nonlocal инструкциясы

Кээде тышкы функцияда ички функциядан кире ала турган өзгөрмө болушу мүмкүн. outer функциясында i өзгөрмөсүн жарыялайлы. Ички функцияга карата бул өзгөрмө тышкы (глобалдык өзгөрмөлөр гана тышкы коддо жарыяланган) болот. Ал эми inner функциясына i'ге бирди кошуу милдети ыйгаралы:

def outer(): i = 0 def inner(): i += 1 # [4, 9, 25] чыгарат inner() return i

Бирок inner үчүн i өзгөрмөсү жергиликтүү, Python аны жарыяланбаган деп эсептеп, тиешелүү катаны чыгарат. Мурда мындай ката global инструкциясы менен оңдолчу. Бирок бул жерде i тышкы өзгөрмө, ошондуктан nonlocal инструкциясын колдонуу керек. Ал глобалдыкты эске албаганда, эң жакын көрүү аянтынан өзгөрмөлөрдүн аталыштарын алат, б.а. inner'дин ичиндеги i бул функциядан жогору жарыяланган өзгөрмө менен алынат:

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 файлдарын колдонобуз. Маалыматтарды иштетүү Маалыматты коргоо саясаты боюнча жүргүзүлөт.
баарын кабыл алуу ыңгайлаштыруу четке кагуу