⊗pyPmFnNl 21 of 129 menu

Python-daky nonlocal buýrugy

Käbir ýagdaýlarda daşarky funksiýada içki funksiýadan elýeter bolmagy zerur bolan üýtgeýän baha bar bolýar. Biz outer funksiýasynda i üýtgeýän bahasyny ýaryþdýarys. Içki funksiýa degiþli bolan bu üýtgeýän baha daşarky (global) bolýar (global üýtgeýän bahalar diňe daşarky koda ýaryþdylan üýtgeýän bahalardyr). Biz inner funksiýasyna i üýtgeýän bahasyna bir goþmagy tabşyrýarys:

def outer(): i = 0 def inner(): i += 1 # [4, 9, 25] görkezer inner() return i

Emma inner üçin i üýtgeýän bahasy ýerli üýtgeýän bahadyr, Python ony ýaryþdyrylmadyk hasaplaýar we degiþli ýalňyşlygy görkezýär. Öň bu ýaly ýalňyşlyk global buýrugy bilen düzeldilýärdi. Emma bu ýerde i daşarky üýtgeýän bahadyr, şonuň üçin biz nonlocal buýrugyny ulanyp bilmelidiris. Ol kesgitleýär ki, sanalan üýtgeýän bahalaryň adyny iň ýakyn gözleg giňiþliginden almaly, globaly çykaryp, ýagny i inner içinde ýokarky funksiýada ýaryþdylan üýtgeýän bahadan alnary:

def outer(): i = 0 def inner(): nonlocal i i += 1 inner() return i print(outer()) # 1 görkezer

Aşakdaky kodda käbir programmist ýalňyşlyk etdi:

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

Bu kod bilen nämä baþlaþdy? Kod awtorynyň ýalňyşlygyny tapyň we düzediň.

Aşakdaky kodda käbir programmist ýalňyşlyk etdi:

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

Bu kod bilen nämä baþlaþdy? Kod awtorynyň ýalňyşlygyny tapyň we düzediň.

Türkmen
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkçeЎзбекOʻzbekTiếng Việt
Biz sahypanyň işlemegi, analitika we şahsyýetleşdirmek üçin cookie ulanýarys. Maglumatlaryň işlenişi Gizlinlik syýasaty boýunça amala aşyrylýar.
hemmesini kabul et sazlamak ret et